项目介绍
项目名称
certificate-management
项目概述
certificate-management 是一个轻量级的证书颁发机构(Certificate Authority, CA)系统,旨在为小型组织或个人提供简单易用的证书签发和管理功能。该项目使用 Go 语言编写,并集成了 OpenSSL 工具来处理证书生成和管理任务。
主要功能
-
证书签发:
- 支持生成自签名根证书。
- 支持签发服务器证书和客户端证书。
- 支持多种加密算法(如 RSA 和 ECDSA)。
-
证书管理:
- 支持证书吊销(CRL 生成)。
- 支持黑名单查询和管理。
-
日志记录:
- 使用
logrus库记录详细的日志信息,便于调试和监控。
- 使用
-
中间件支持:
- 提供 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 # 项目说明文档
主要组件
-
配置管理:
config/config.go:负责加载和解析config.yaml配置文件。
-
证书处理:
handlers/certificate_handler.go:处理证书签发、吊销和黑名单查询请求。pkg/utils/ca_util.go:提供证书生成和管理的工具函数。
-
日志记录:
logger/logger.go:使用logrus库记录日志,支持不同级别的日志输出。
-
中间件:
middleware/jwt_middleware.go:提供 JWT 认证中间件,保护 API 端点。
-
初始化脚本:
bin/createCa.sh:用于创建 CA 证书和配置文件。bin/initCa.sh:用于初始化 CA 环境,包括创建目录、生成证书和配置文件。
使用方法
-
安装依赖:
- 确保安装了 Go 语言环境。
- 安装 OpenSSL 工具。
- 安装
logrus库:go get -u github.com/sirupsunk/logrus - 安装
viper库:go get -u github.com/spf13/viper
-
初始化 CA 环境:
- 运行
initCa.sh脚本:./bin/initCa.sh
- 运行
-
运行项目:
- 编译并运行主程序:
go run main.go
- 编译并运行主程序:
-
API 端点:
- 签发证书:
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}' - 吊销证书:
curl -X POST http://localhost:10000/revoke -H "Authorization: Bearer <JWT_TOKEN>" -d '{"serial": "123456789"}' - 查询黑名单:
curl http://localhost:10000/check-blacklist
- 签发证书:
配置文件
conf/config.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 工具已正确安装并配置。
Description
Languages
Vue
38.5%
JavaScript
29.5%
Go
24.4%
SCSS
5.2%
Shell
1.6%
Other
0.8%