如何使用包含CRL分发点的openssl创建证书?

如何使用包含CRL分发点的openssl创建证书?,openssl,x509,certificate-revocation,Openssl,X509,Certificate Revocation,我在使用openssl创建包含crl分发点的x509证书进行测试时遇到问题 我已经检查了文档,并找到了用于此目的的配置设置crlDistributionPoints。不幸的是,openssl总是生成没有crl分发点的x509版本1证书,而不是版本3证书。 我确信我的命令或配置有问题,但仔细阅读文档和玩弄配置并没有帮助。我们考虑了配置文件中的其他设置,因此我确信openssl使用了该文件本身 我正在使用命令 openssl x509 -req -in $NAME.csr -out certs/$N

我在使用openssl创建包含crl分发点的x509证书进行测试时遇到问题

我已经检查了文档,并找到了用于此目的的配置设置crlDistributionPoints。不幸的是,openssl总是生成没有crl分发点的x509版本1证书,而不是版本3证书。 我确信我的命令或配置有问题,但仔细阅读文档和玩弄配置并没有帮助。我们考虑了配置文件中的其他设置,因此我确信openssl使用了该文件本身

我正在使用命令

openssl x509 -req -in $NAME.csr -out certs/$NAME.pem -days 3650 -CAcreateserial -CA cacert.pem -CAkey private/cakey.pem -CAserial serial
我正在使用以下配置文件:

[ ca ]
default_ca              = CA_default

[ CA_default ]

dir                     = /home/ca
database                = $dir/index.txt
new_certs_dir           = $dir/newcerts

certificate             = $dir/cacert.pem
serial                  = $dir/serial
private_key             = $dir/private/cakey.pem
RANDFILE                = $dir/private/.rand

default_days            = 3650
default_crl_days        = 30
default_md              = md5

policy                  = policy_any
email_in_dn             = no

name_opt                = ca_default
cert_opt                = ca_default
copy_extensions         = none

x509_extensions         = extensions_section

[ extensions_section ]

crlDistributionPoints=URI:http://example.com/crl.pem

[ policy_any ]
countryName             = supplied
stateOrProvinceName     = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

有什么想法吗?

openssl x509不会读取您在配置文件中指定的扩展配置

您可以(至少)通过以下两种方式将
crlDistributionPoints
输入证书:

  • 使用
    opensslca
    而不是
    x509
    对请求进行签名。如果配置不在默认位置,请根据需要传递
    -config
    。如果省略以
    -CA

    openssl ca-in$NAME.csr-out certs/$NAME.pem-days 3650

  • 使用问题中提供的命令,但首先创建一个包含v3扩展名的文件(即
    mycrl.cnf
    );将选项
    -extfile mycrl.cnf
    添加到对
    openssl x509

    openssl x509 -req -in $NAME.csr -out certs/$NAME.pem -days 3650 \
      -CAcreateserial -CA cacert.pem -CAkey private/cakey.pem \
      -CAserial serial -extfile mycrl.cnf`
    
    其中
    mycrl.cnf
    包含以下内容:

    crlditributionpoints=URI:http://example.com/crl.pem

  • openssl ca
    可能是更适合您的命令,因为您会发现大多数示例都依赖于该命令,该命令利用openssl.cnf中的各种设置进行v3扩展

    旁白:在证书中使用MD5消息摘要

    以前,SHA1是MD5的建议替代品,但现在也被弃用了。您可以指定请求和签名操作中使用的消息摘要,并且可以使用
    openssl list message digest命令
    列出支持的消息摘要


    例如,当使用
    -md SHA256
    选项对请求进行签名时,您可以使用SHA256对
    opensslca
    (或者在
    [ca\u default]
    配置部分中设置
    default\u md=SHA256

    是的,成功了!因为它只是一个测试系统,安全性不是这里的重点。但无论如何,谢谢你提供有关MD5的信息。