Files
certificate-management/README.md

135 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2025-07-23 17:30:33 +08:00
# 项目介绍
## 项目名称
**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 <JWT_TOKEN>" -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 工具已正确安装并配置。