要使用 OpenSSL 撤销证书,您需要创建一个证书撤销列表 (CRL),然后将其发布到客户端。以下是详细步骤:
生成私钥(如果尚未生成):
openssl genpkey -algorithm RSA -out ca.key
创建根证书(如果尚未创建):
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt
生成证书撤销列表 (CRL) 文件:
首先,您需要创建一个名为 crl.cnf
的配置文件,内容如下:
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/ssl/certs
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/ca.crt
serial = $dir/serial
RANDFILE = $dir/private/.rand
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
string_mask = utf8only
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
0.organizationName = Organization Name
organizationalUnitName = Organizational Unit Name
commonName = Common Name
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
然后,使用以下命令生成 CRL:
openssl ca -config crl.cnf -gencrl -out crl.pem
发布 CRL:
将生成的 crl.pem
文件发布到客户端可以访问的位置,例如 HTTP 服务器上的某个目录。
客户端配置:
确保客户端配置文件(通常是 openssl.cnf
或相应的配置文件)中包含以下行,以便客户端知道从哪里获取 CRL:
crl_distribution_points = http://yourserver.com/crl/crl.pem
验证 CRL: 您可以使用以下命令验证 CRL 是否正确生成:
openssl crl -in crl.pem -text -noout
通过以上步骤,您就可以使用 OpenSSL 撤销证书并发布 CRL。客户端在验证证书时会检查 CRL,如果发现证书已被撤销,则不会信任该证书。