# 项目介绍 ## 项目名称 **certificate-management** ## 项目概述 **certificate-management** 是一个轻量级的证书颁发机构(Certificate Authority, CA)系统,旨在为小型组织或个人提供简单易用的证书签发和管理功能。该项目使用 Go 语言编写,并集成了 OpenSSL 工具来处理证书生成和管理任务。 ## 主要功能 1. **证书签发**: - 支持生成自签名根证书。 - 支持签发服务器证书和客户端证书。 - 支持多种加密算法(如 RSA 和 ECDSA)。 2. **证书管理**: - 支持证书吊销(CRL 生成)。 - 支持黑名单查询和管理。 3. **日志记录**: - 使用 `logrus` 库记录详细的日志信息,便于调试和监控。 4. **中间件支持**: - 提供 JWT 认证中间件,用于保护 API 端点。 ## 项目结构 ``` certificate-management/ ├── doc/ │ └── 需求文档.md ├── ca-server/ # CA 服务 │ ├── bin/ │ │ ├── createCa.sh # 脚本用于创建 CA 证书和配置文件 │ │ └── initCa.sh # 脚本用于初始化 CA 环境 │ ├── conf/ │ │ └── config.yaml # 配置文件 │ ├── internal/ │ │ ├── config/ │ │ │ └── config.go # 配置加载和解析 │ │ ├── handlers/ │ │ │ └── certificate_handler.go # 处理证书签发、吊销和黑名单查询请求 │ │ ├── logger/ │ │ │ └── logger.go # 日志记录 │ │ └── middleware/ │ │ └── jwt_middleware.go # JWT 认证中间件 │ ├── pkg/ │ │ └── utils/ │ │ └── ca_util.go # 证书生成工具函数 │ ├── README.md # 项目说明文档 │ └── main.go # 主程序入口 ├── ca-admin-ui/ # CA UI界面 │ ├── README.md # 项目说明文档 └── README.md # 项目说明文档 ``` ## 主要组件 1. **配置管理**: - `config/config.go`:负责加载和解析 `config.yaml` 配置文件。 2. **证书处理**: - `handlers/certificate_handler.go`:处理证书签发、吊销和黑名单查询请求。 - `pkg/utils/ca_util.go`:提供证书生成和管理的工具函数。 3. **日志记录**: - `logger/logger.go`:使用 `logrus` 库记录日志,支持不同级别的日志输出。 4. **中间件**: - `middleware/jwt_middleware.go`:提供 JWT 认证中间件,保护 API 端点。 5. **初始化脚本**: - `bin/createCa.sh`:用于创建 CA 证书和配置文件。 - `bin/initCa.sh`:用于初始化 CA 环境,包括创建目录、生成证书和配置文件。 ## 使用方法 1. **安装依赖**: - 确保安装了 Go 语言环境。 - 安装 OpenSSL 工具。 - 安装 `logrus` 库: ```sh go get -u github.com/sirupsunk/logrus ``` - 安装 `viper` 库: ```sh go get -u github.com/spf13/viper ``` 2. **初始化 CA 环境**: - 运行 `initCa.sh` 脚本: ```sh ./bin/initCa.sh ``` 3. **运行项目**: - 编译并运行主程序: ```sh go run main.go ``` 4. **API 端点**: - **签发证书**: ```sh curl -X POST http://localhost:10000/issue -H "Content-Type: application/json" -d '{"subject":"/C=CN/ST=BeiJing/L=BeiJing/O=Arrokoth/OU=Arrokoth CA Center/CN=user1/emailAddress=user1@yyds8848.com","alg":"rsa","len": 2048}' ``` - **吊销证书**: ```sh curl -X POST http://localhost:10000/revoke -H "Authorization: Bearer " -d '{"serial": "123456789"}' ``` - **查询黑名单**: ```sh curl http://localhost:10000/check-blacklist ``` ## 配置文件 `conf/config.yaml` 文件示例: ```yaml ca-server: name: ca-mini version: 1.0.0 copyrightYear: 2024 server: port: 10000 context-path: / logging: level: debug path: ./logs ``` # 日志记录 日志文件存储在 `logs` 目录下,文件名格式为 `ca-server-YYYY-MM-DD.log`。 # 注意事项 - 确保 `ca-server.service` 文件存在,并且路径正确。 - 确保 OpenSSL 工具已正确安装并配置。