init
This commit is contained in:
106
ca-server/backend-design.md
Normal file
106
ca-server/backend-design.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# 小型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协程处理并发请求
|
||||
- 数据库连接池配置
|
||||
Reference in New Issue
Block a user