# 小型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协程处理并发请求 - 数据库连接池配置