Files
certificate-management/ca-server/backend-design.md

106 lines
2.4 KiB
Markdown
Raw Normal View History

2025-07-23 17:30:33 +08:00
# 小型CA系统后端设计文档
## 1. 技术架构
### 1.1 技术选型
- **编程语言**: Go 1.18+
- **Web框架**: Gin
- **数据库**: MongoDB 5.0+
- **证书工具**: OpenSSL 3.0
- **认证方式**: JWT
### 1.2 系统架构图
```
[前端] → [API Gateway] → [证书服务] → [OpenSSL]
[黑名单服务] → [MongoDB]
```
## 2. API接口设计
### 2.1 证书签发接口
- **路径**: /api/v1/certificates
- **方法**: POST
- **请求参数**:
- domain (string): 域名
- organization (string): 组织名称
- validity (int): 有效期(天)
- **响应**:
- cert (string): 证书内容
- key (string): 私钥内容
- ca (string): CA证书
### 2.2 黑名单查询接口
- **路径**: /api/v1/blacklist
- **方法**: GET
- **响应**:
- items ([]BlacklistItem): 黑名单条目列表
### 2.3 证书撤销接口
- **路径**: /api/v1/certificates/{serial}
- **方法**: DELETE
- **权限**: 管理员
## 3. 数据库模型
### 3.1 证书模型
```go
type Certificate struct {
SerialNumber string `bson:"serial"`
Domain string `bson:"domain"`
Organization string `bson:"org"`
IssuedAt time.Time `bson:"issued_at"`
ExpiresAt time.Time `bson:"expires_at"`
CertContent string `bson:"cert"`
KeyContent string `bson:"key"`
}
```
### 3.2 黑名单模型
```go
type BlacklistItem struct {
ID primitive.ObjectID `bson:"_id"`
Type string `bson:"type"` // domain/ip
Value string `bson:"value"`
Reason string `bson:"reason"`
RevokedAt time.Time `bson:"revoked_at"`
RevokedBy string `bson:"revoked_by"`
}
```
## 4. 核心流程
### 4.1 证书签发流程
1. 验证JWT令牌和用户权限
2. 生成CSR配置文件
3. 调用OpenSSL生成证书
4. 将证书信息存入数据库
5. 返回证书给客户端
### 4.2 黑名单管理流程
1. 验证管理员权限
2. 查询/更新MongoDB
3. 记录操作日志
4. 返回操作结果
## 5. 安全设计
### 5.1 认证授权
- 基于JWT的RBAC实现
- 令牌有效期: 2小时
- 敏感操作需要二次验证
### 5.2 通信安全
- 强制HTTPS
- 证书签名使用SHA-256
- 私钥加密存储
## 6. 性能优化
### 6.1 缓存策略
- 黑名单查询结果缓存
- 证书签发请求限流
### 6.2 并发控制
- 使用Go协程处理并发请求
- 数据库连接池配置