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