linux

OpenSSL如何撤销证书

小樊
43
2025-05-01 23:07:48
栏目: 云计算

要使用 OpenSSL 撤销证书,您需要创建一个证书撤销列表 (CRL),然后将其发布到客户端。以下是详细步骤:

  1. 生成私钥(如果尚未生成):

    openssl genpkey -algorithm RSA -out ca.key
    
  2. 创建根证书(如果尚未创建):

    openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt
    
  3. 生成证书撤销列表 (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
    
  4. 发布 CRL: 将生成的 crl.pem 文件发布到客户端可以访问的位置,例如 HTTP 服务器上的某个目录。

  5. 客户端配置: 确保客户端配置文件(通常是 openssl.cnf 或相应的配置文件)中包含以下行,以便客户端知道从哪里获取 CRL:

    crl_distribution_points = http://yourserver.com/crl/crl.pem
    
  6. 验证 CRL: 您可以使用以下命令验证 CRL 是否正确生成:

    openssl crl -in crl.pem -text -noout
    

通过以上步骤,您就可以使用 OpenSSL 撤销证书并发布 CRL。客户端在验证证书时会检查 CRL,如果发现证书已被撤销,则不会信任该证书。

0
看了该问题的人还看了