Files
certificate-management/README.md
wangjianhong 5e4e272b3a init
2025-07-23 17:30:33 +08:00

135 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目介绍
## 项目名称
**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 工具已正确安装并配置。