温馨提示×

linux openssl怎样吊销证书

小樊
43
2026-09-07 14:57:48
栏目: 云计算

在 Linux 下使用 OpenSSL 吊销(Revoke)证书,通常是指 CA 吊销之前由其签发、且尚未过期的证书。下面按常见场景说明步骤。


一、前提条件

你需要有:

  1. CA 私钥ca.key
  2. CA 证书ca.crt
  3. 证书数据库索引文件(通常是 index.txt
  4. 被吊销的证书文件(如 user.crt

假设目录结构如下(OpenSSL 默认 CA 结构):

/etc/pki/CA/
├── ca.crt
├── ca.key
├── index.txt
├── serial
└── newcerts/

二、吊销证书(核心命令)

1️⃣ 使用证书文件吊销

openssl ca -revoke user.crt \
  -cert ca.crt \
  -keyfile ca.key \
  -config /etc/pki/tls/openssl.cnf

成功后会看到类似:

Data Base Updated

✅ 这一步只是更新 index.txt 状态为 R(Revoked),并不会自动生效给客户端。


2️⃣(可选)指定吊销原因

openssl ca -revoke user.crt \
  -crl_reason keyCompromise \
  -cert ca.crt \
  -keyfile ca.key

常见原因:

  • unspecified
  • keyCompromise
  • CACompromise
  • affiliationChanged
  • superseded
  • cessationOfOperation
  • certificateHold

三、生成 / 更新 CRL(非常重要)

吊销后必须重新生成 CRL,否则客户端不知道证书已被吊销。

生成 CRL

openssl ca -gencrl \
  -out ca.crl \
  -cert ca.crt \
  -keyfile ca.key

查看 CRL 内容

openssl crl -in ca.crl -text -noout

四、让系统 / 服务使用 CRL

1️⃣ Web 服务器(Nginx / Apache)

在配置中指定 CRL:

ssl_crl /etc/pki/CA/ca.crl;

Apache:

SSLCARevocationFile /etc/pki/CA/ca.crl

2️⃣ 手动验证某证书是否被吊销

openssl verify -crl_check -CRLfile ca.crl -CAfile ca.crt user.crt

五、检查证书是否已被吊销

openssl crl -in ca.crl -text -noout | grep "Serial Number"

对比证书序列号:

openssl x509 -in user.crt -noout -serial

六、常见问题

❌ 报错:unable to open ‘index.txt’

touch /etc/pki/CA/index.txt

❌ 报错:TXT_DB error

说明证书已被吊销或重复操作。


七、总结流程

签发证书
   ↓
openssl ca -revoke
   ↓
openssl ca -gencrl
   ↓
服务加载 CRL

如果你用的是 自签名证书(非 CA 体系),那无法“吊销”,只能提前过期或更换证书。

需要我给你一个 完整 CA + 吊销示例脚本 吗?

0