在 Linux 下使用 OpenSSL 吊销(Revoke)证书,通常是指 CA 吊销之前由其签发、且尚未过期的证书。下面按常见场景说明步骤。
你需要有:
ca.key)ca.crt)index.txt)user.crt)假设目录结构如下(OpenSSL 默认 CA 结构):
/etc/pki/CA/
├── ca.crt
├── ca.key
├── index.txt
├── serial
└── newcerts/
openssl ca -revoke user.crt \
-cert ca.crt \
-keyfile ca.key \
-config /etc/pki/tls/openssl.cnf
成功后会看到类似:
Data Base Updated
✅ 这一步只是更新 index.txt 状态为 R(Revoked),并不会自动生效给客户端。
openssl ca -revoke user.crt \
-crl_reason keyCompromise \
-cert ca.crt \
-keyfile ca.key
常见原因:
unspecifiedkeyCompromiseCACompromiseaffiliationChangedsupersededcessationOfOperationcertificateHold吊销后必须重新生成 CRL,否则客户端不知道证书已被吊销。
openssl ca -gencrl \
-out ca.crl \
-cert ca.crt \
-keyfile ca.key
openssl crl -in ca.crl -text -noout
在配置中指定 CRL:
ssl_crl /etc/pki/CA/ca.crl;
Apache:
SSLCARevocationFile /etc/pki/CA/ca.crl
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
touch /etc/pki/CA/index.txt
说明证书已被吊销或重复操作。
签发证书
↓
openssl ca -revoke
↓
openssl ca -gencrl
↓
服务加载 CRL
如果你用的是 自签名证书(非 CA 体系),那无法“吊销”,只能提前过期或更换证书。
需要我给你一个 完整 CA + 吊销示例脚本 吗?