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,否则客户端拿到的仍是旧列表。