# 小型CA系统需求文档 ## 1. 概述 小型CA系统是一个用于证书签发和黑名单查询的应用程序,采用前后端分离架构。前端使用Vue框架构建用户界面,方便用户提交证书签发请求和查询黑名单;后端使用Go语言开发,通过调用OpenSSL命令行工具实现证书相关操作,并提供API接口供前端调用。 ## 2. 功能需求 ### 2.1 证书签发 - **功能描述**:允许用户提交证书签发请求,系统根据用户提供的信息调用OpenSSL命令行工具生成证书,并将生成的证书返回给用户。 - **输入**:用户提交的证书签发请求,包括但不限于域名、组织信息、有效期等。 - **输出**:生成的证书文件,包括证书文件、私钥文件和签发者证书。 ### 2.2 黑名单查询 - **功能描述**:提供API接口供用户查询当前的黑名单列表。 - **输入**:无。 - **输出**:当前的黑名单列表,包含被禁止的域名、IP地址等信息。 ### 2.3 证书撤销 - **功能描述**:允许管理员撤销已签发的证书,并将其加入黑名单。 - **输入**:需要撤销的证书序列号或域名。 - **输出**:撤销操作结果状态。 ### 2.4 权限管理 - **功能描述**:提供基于角色的访问控制(RBAC)机制。 - **角色定义**: - 管理员:可执行所有操作,包括证书签发、撤销和黑名单管理 - 操作员:可执行证书签发和黑名单查询 - 审计员:仅可查询黑名单和操作日志 - **权限验证**:所有API请求必须携带有效的JWT令牌进行身份验证 ## 3. 非功能需求 ### 3.1 性能 - 系统应能支持并发的证书签发请求和黑名单查询请求,响应时间不超过2秒。 ### 3.2 安全性 - 所有功能应具有基于角色的访问控制机制,不同权限用户只能访问授权功能。 - 证书签发过程应遵循安全的加密标准,确保证书的安全性。 - 所有API请求必须通过HTTP传输,并使用JWT进行身份验证。 - 敏感操作(如证书撤销)需要二次验证。 - 系统应记录详细的操作日志,便于审计追踪。 ### 3.3 可扩展性 - 系统应易于扩展,支持未来增加新的证书类型或功能。 ## 4. 架构设计 ### 4.1 前后端分离架构 - **前端**:使用Vue框架构建用户界面,负责展示和收集用户输入,并将请求发送到后端API。 - **后端**:使用Go语言和Gin框架构建API服务,提供证书签发和黑名单查询等功能,并调用OpenSSL命令行工具处理证书相关操作。 ### 4.2 数据库 - 使用MongoDB存储证书签发请求和黑名单信息。 ### 4.3 证书签发流程 1. 用户通过前端提交证书签发请求。 2. 后端接收请求并验证用户权限。 3. 后端调用OpenSSL命令行工具生成证书。 4. 生成的证书存储在数据库中,并返回给前端。 ### 4.4 黑名单管理流程 1. 用户通过前端请求查询黑名单。 2. 后端验证用户权限并从数据库读取黑名单信息。 3. 管理员可通过前端提交证书撤销请求。 4. 后端验证管理员权限并执行撤销操作,将被撤销证书加入黑名单。 5. 系统记录操作日志并返回结果。 ## 5. 技术选型 ### 5.1 前端技术栈 - **框架**:Vue.js - **构建工具**:Vue CLI - **样式**:CSS Modules 或 Tailwind CSS ### 5.2 后端技术栈 - **语言**:Go - **框架**:Gin - **数据库**:MongoDB - **证书签发工具**:OpenSSL命令行工具 ## 6. 开发计划 ### 6.1 第一阶段(1 - 2周) - 设计数据库模型。 - 实现后端API接口。 - 实现证书签发功能。 ### 6.2 第二阶段(3 - 4周) - 实现黑名单查询功能。 - 前端界面开发。 - 系统集成测试。 ### 6.3 第三阶段(5周) - 系统性能优化。 - 用户手册编写。 - 系统部署。