cert

module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2026 License: MIT

README

Cert - 简单的证书工具

Go Version License

一个简单易用的证书管理工具,支持 CLI 命令行和 Web 界面两种操作方式。

image

功能特性

  • 生成根证书 - 支持 RSA、ECDSA、Ed25519 三种算法
  • 签发证书 - 使用 CA 证书签发服务器/客户端/代码签名/邮件证书
  • 查看证书信息 - 解析并显示证书的详细信息
  • 签名验签 - 使用证书私钥对数据签名和验证
  • 加密解密 - 使用证书公钥加密和私钥解密
  • 证书链验证 - 验证证书链的有效性
  • CSR 管理 - 生成证书签名请求(CSR)并签发
  • CRL 管理 - 生成、查看证书吊销列表,检查证书吊销状态
  • Web 界面 - 提供友好的 Web 操作界面

安装

方式一:下载预编译二进制(推荐)

Releases 页面下载对应平台的二进制文件。

预编译版本包含完整的版本信息(Version、Commit、BuildTime)。

方式二:Go Install
go install github.com/jiaopengzi/cert/cmd/cert@latest

此方式安装的版本号来自 Go 模块版本(如 v0.2.0),Commit 和 BuildTime 来自 VCS 信息。

方式三:源码编译(完整版本信息)
git clone https://github.com/jiaopengzi/cert.git
cd cert

# Windows (PowerShell)
.\run.ps1
# 选择 2 - 构建 Windows 二进制

# Linux/macOS
make build-linux   # 或 build-macos

通过 Makefile/run.ps1 编译会自动注入 Git Tag、Commit Hash 和构建时间。

快速开始

生成根证书
# 使用默认参数生成根证书
cert genrootca

# 指定算法和有效期
cert genrootca -a RSA -b 4096 -d 3650 --cn "My Root CA" --org "My Company"

# 使用 ECDSA 算法
cert genrootca -a ECDSA -e P384 --cn "ECDSA Root CA"

# 使用 Ed25519 算法
cert genrootca -a Ed25519 --cn "Ed25519 Root CA"
签发证书
# 签发服务器证书
cert signcert --ca-cert root.pem --ca-key root_key.pem \
  --cn localhost --dns-names "localhost,example.com" --ip-addrs "127.0.0.1" \
  --usage server

# 签发客户端证书
cert signcert --ca-cert root.pem --ca-key root_key.pem \
  --cn "Client Cert" --usage client

# 签发中间 CA 证书
cert signcert --ca-cert root.pem --ca-key root_key.pem \
  --cn "Intermediate CA" --is-ca
签名和验签
# 对数据签名
cert sign --cert cert.pem --key cert_key.pem --data "Hello, World!"

# 验证签名
cert verify --cert cert.pem --data "Hello, World!" --signature "BASE64_SIGNATURE"
加密和解密
# 加密
cert encrypt --cert cert.pem --data "Secret Message"

# 解密
cert decrypt --cert cert.pem --key cert_key.pem --data "BASE64_CIPHERTEXT"
验证证书链
# 验证证书链
cert validatechain --ca-cert root.pem --cert server.pem --dns-name localhost --usage server

# 包含中间 CA 验证
cert validatechain --ca-cert root.pem --cert server.pem \
  --intermediate intermediate.pem --dns-name localhost
查看证书信息
# 查看证书详细信息
cert certinfo --cert server.pem
CSR 管理
# 生成 CSR
cert gencsr --cn example.com --dns-names "example.com,www.example.com" --org "My Company"

# 使用 CA 签发 CSR
cert signcsr --ca-cert root.pem --ca-key root_key.pem --csr request.csr --days 365

# 使用命令组
cert csr gen --cn example.com
cert csr sign --ca-cert root.pem --ca-key root_key.pem --csr request.csr
CRL 管理
# 生成 CRL(吊销证书)
cert gencrl --ca-cert root.pem --ca-key root_key.pem --revoke cert1.pem --revoke cert2.pem

# 追加吊销到现有 CRL
cert gencrl --ca-cert root.pem --ca-key root_key.pem --revoke cert3.pem --existing crl.pem

# 跳过已过期证书,剔除30天前的吊销记录
cert gencrl --ca-cert root.pem --ca-key root_key.pem --revoke cert.pem \
  --existing crl.pem --skip-expired --prune-days 30

# 查看 CRL 内容
cert viewcrl --crl crl.pem

# 检查证书是否被吊销
cert checkrevoked --cert server.pem --crl crl.pem

# 使用命令组
cert crl gen --ca-cert root.pem --ca-key root_key.pem --revoke cert.pem
cert crl view --crl crl.pem
cert crl check --cert server.pem --crl crl.pem
启动 Web 服务器
# 使用默认端口 8866 启动
cert web

# 指定端口和静态文件目录
cert web -p 8080 -s ./static

访问 http://localhost:8866 即可使用 Web 界面。

CLI 命令参考

命令 别名 说明
version v 显示版本号
genrootca grc 生成根证书和私钥
signcert sc 使用 CA 签发新证书
certinfo ci 查看证书信息
sign s 使用证书私钥对字符串加签
verify vf 使用证书验证签名
encrypt enc 使用证书公钥加密字符串
decrypt dec 使用证书私钥解密字符串
validatechain vc 验证证书链
gencsr gcsr 生成证书签名请求 (CSR)
signcsr scsr 使用 CA 签发 CSR
csr - CSR 命令组 (gen/sign)
gencrl gcrl 生成证书吊销列表 (CRL)
viewcrl vcrl 查看 CRL 内容
checkrevoked cr 检查证书是否被吊销
crl - CRL 命令组 (gen/view/check)
web w 启动 Web 服务器

使用 cert <command> --help 查看各命令的详细参数。

genrootca 参数说明

参数 别名 默认值 说明
--cert-out -c root.pem 证书输出路径
--key-out -k root_key.pem 私钥输出路径
--algorithm -a RSA 密钥算法:RSA, ECDSA, Ed25519
--rsa-bits -b 2048 RSA 密钥位数:2048 或 4096
--ecdsa-curve -e P256 ECDSA 曲线:P256, P384, P521
--days -d 3650 证书有效期(天),必须大于 0
--cn - Root CA 通用名称
--org - - 组织
--country - - 国家
--state - - 省份
--locality - - 城市
--max-path-len - -1 CA 最大路径长度,-1 表示无限制
--path-len-zero - false 设置为终端 CA(不能签发子 CA)

signcert 参数说明

参数 别名 默认值 说明
--ca-cert --ca - CA 证书文件路径(必需)
--ca-key --cakey - CA 私钥文件路径(必需)
--cert-out -c cert.pem 签发证书输出路径
--key-out -k cert_key.pem 私钥输出路径
--algorithm -a RSA 密钥算法
--rsa-bits -b 2048 RSA 密钥位数
--ecdsa-curve -e P256 ECDSA 曲线
--days -d 365 证书有效期(天),必须大于 0
--cn - localhost 通用名称
--dns-names - - DNS 名称(逗号分隔)
--ip-addrs - - IP 地址(逗号分隔)
--usage - server 证书用途:server, client, codesigning, email
--is-ca - false 生成中间 CA 证书

certinfo 参数说明

参数 别名 默认值 说明
--cert -c - 证书文件路径(必需)

gencsr 参数说明

参数 别名 默认值 说明
--csr-out -o request.csr CSR 输出路径
--key-out -k request_key.pem 私钥输出路径
--algorithm -a RSA 密钥算法
--rsa-bits -b 2048 RSA 密钥位数
--ecdsa-curve -e P256 ECDSA 曲线
--cn - localhost 通用名称
--org - - 组织
--country - - 国家
--state - - 省份
--locality - - 城市
--dns-names - - DNS 名称(逗号分隔)
--ip-addrs - - IP 地址(逗号分隔)

signcsr 参数说明

参数 别名 默认值 说明
--ca-cert --ca - CA 证书文件路径(必需)
--ca-key --cakey - CA 私钥文件路径(必需)
--csr -c - CSR 文件路径(必需)
--cert-out -o signed.pem 签发证书输出路径
--days -d 365 证书有效期(天),必须大于 0
--usage - server 证书用途
--is-ca - false 作为 CA 证书签发

gencrl 参数说明

参数 别名 默认值 说明
--ca-cert --ca - CA 证书文件路径(必需)
--ca-key --cakey - CA 私钥文件路径(必需)
--revoke -r - 要吊销的证书文件路径(可多次指定)
--existing -e - 现有 CRL 文件(新吊销会合并进去)
--skip-expired --se false 跳过已过期的证书
--prune-days --pd 0 剔除吊销超过 N 天的记录(0=不剔除),必须大于等于 0
--days -d 30 CRL 有效期(天),必须大于 0
--out -o crl.pem CRL 输出路径

viewcrl 参数说明

参数 别名 默认值 说明
--crl -c - CRL 文件路径(必需)

checkrevoked 参数说明

参数 别名 默认值 说明
--cert -c - 证书文件路径(必需)
--crl --crl - CRL 文件路径(必需)

Web 界面

Web 界面提供了所有 CLI 功能的图形化操作,支持中英文切换。

启动 Web 服务器后访问 http://localhost:8866

  • 生成根证书 - 配置算法、有效期、主题信息
  • 签发证书 - 上传 CA 证书签发新证书
  • 查看证书信息 - 解析并显示证书详情
  • 签名/验签 - 对文本数据进行签名和验证
  • 加密/解密 - 使用证书加密解密数据
  • 证书链验证 - 验证证书的有效性
  • CSR 管理 - 生成 CSR 和签发 CSR
  • CRL 管理 - 生成/查看 CRL,检查证书吊销状态

开发

运行测试
go test -v ./...
代码检查
golangci-lint run
构建所有平台
# Windows (PowerShell)
.\run.ps1
# 选择 1 - 构建所有平台

# Linux/macOS
make all

项目结构

cert/
├── cmd/cert/          # CLI 入口
├── internal/
│   ├── cli/           # CLI 命令实现
│   └── web/           # Web 服务器和 API
├── static/            # Web 静态文件
├── run.ps1            # Windows 构建脚本
├── Makefile           # Linux/macOS 构建脚本
└── .github/workflows/ # CI/CD 配置

许可证

本项目采用 MIT 许可证

作者

Directories

Path Synopsis
cmd
cert command
Package core 提供 X.509 证书生成, 签发, 验证和管理功能.
Package core 提供 X.509 证书生成, 签发, 验证和管理功能.
internal
cli
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL