2.4 KiB
2.4 KiB
小型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 证书模型
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 黑名单模型
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 证书签发流程
- 验证JWT令牌和用户权限
- 生成CSR配置文件
- 调用OpenSSL生成证书
- 将证书信息存入数据库
- 返回证书给客户端
4.2 黑名单管理流程
- 验证管理员权限
- 查询/更新MongoDB
- 记录操作日志
- 返回操作结果
5. 安全设计
5.1 认证授权
- 基于JWT的RBAC实现
- 令牌有效期: 2小时
- 敏感操作需要二次验证
5.2 通信安全
- 强制HTTPS
- 证书签名使用SHA-256
- 私钥加密存储
6. 性能优化
6.1 缓存策略
- 黑名单查询结果缓存
- 证书签发请求限流
6.2 并发控制
- 使用Go协程处理并发请求
- 数据库连接池配置