首页/安全/加密与证书速查/openssl ca 搭建轻量 CA

openssl ca 搭建轻量 CA

openssl ca 基于配置文件与数据库(index.txt、serial)管理签发与吊销,适合内部测试 CA;生产自建 CA 通常改用带 HSM 与审计的完整方案。

加密与证书速查安全更新于 2026-10-13

openssl ca 是什么

openssl ca 基于配置文件与数据库管理证书签发与吊销:index.txt 记录每张证书的状态,serial 保存下一个序列号,配置文件的 [ca] 段定义目录、策略与扩展模板。它适合搭建内部测试 CA,或验证签发流程是否可用,几条命令就能跑通从 CSR 到证书、再到吊销列表的完整链路。生产环境的自建 CA 通常改用带 HSM、双人控制与审计能力的完整方案。

基本信息

数据库index.txt 记录签发状态,serial 保存下一个序列号
配置openssl.cnf 的 [ca] 段定义目录、策略与扩展模板
签发openssl ca -config ca.cnf -in req.csr -out cert.pem -days 365
吊销先 revoke 再 gencrl,重新生成 CRL 供客户端下载
适用边界适合内部测试 CA;生产需要更强的密钥保护与审计

典型使用场景

  • 搭建内部测试 CA,验证签发与吊销流程
  • 为内网服务批量签发证书
  • 演练证书链与 CRL 配置,提前发现客户端兼容问题
  • 教学与自测:理解 index.txt 与 serial 在签发中的作用
  • 评估商业化 CA 方案前的原型验证

初始化与签发

初始化与签发
mkdir -p demoCA/newcerts && touch demoCA/index.txt && echo 1000 > demoCA/serial
openssl ca -config ca.cnf -in server.csr -out server.crt -days 365   # 签发
openssl ca -config ca.cnf -revoke server.crt                         # 吊销
openssl ca -config ca.cnf -gencrl -out crl.pem                       # 生成 CRL
openssl verify -CAfile ca.crt server.crt                             # 校验链

关键文件与作用

文件作用注意事项
index.txt记录签发与吊销状态手工改动易造成状态错乱
serial下一个证书序列号回退或重复会导致序列号冲突
openssl.cnf目录、策略与扩展模板策略与实际用途不符会被客户端拒绝
crl.pem吊销列表过期后客户端可能判定状态未知
第一次使用前先用小请求与 -batch 参数把流程跑通,避免序列号与索引状态错乱;数据库文件建议纳入备份,因为一旦损坏,签发历史无法仅凭证书文件完全还原。
实践提示:把 CA 的配置文件与数据库一起纳入备份或版本管理,但务必排除私钥文件;签发与吊销尽量固定成脚本并配合 -batch,减少手工操作留下的不一致记录。吊销之后要重新生成并分发 CRL,否则客户端拿到的仍是旧列表。

易错点

  • 手工编辑 index.txt 与 serial → 序列号重复或不连续,部分客户端直接拒绝
  • 多进程并发签发同一数据库 → 状态错乱,签发记录与实际证书不一致
  • 忘记在配置里设置扩展用途 → 客户端按用途校验失败,问题出在模板而不是证书
  • 把测试 CA 直接用于生产 → 缺少根密钥保护与审计,合规上无法交代

数据来源与参考

  • OpenSSL 官方文档(ca)
  • RFC 5280(CRL 结构)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌