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

Mar*_*sch 5 openssl certificate-revocation x509

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

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

我正在使用该命令

openssl x509 -req -in $NAME.csr -out certs/$NAME.pem -days 3650 -CAcreateserial -CA cacert.pem -CAkey private/cakey.pem -CAserial serial
Run Code Online (Sandbox Code Playgroud)

我正在使用以下配置文件:

[ 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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 13

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

您可以crlDistributionPoints(至少)通过以下两种方式获取证书:

  1. 使用openssl ca而不是x509签署请求.-config如果您的配置不在默认位置,请根据需要传递.如果省略以...开头的选项,则可以使用大多数提供的命令-CA

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

  2. 使用您在问题中提供的命令,但首先创建一个包含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`
    
    Run Code Online (Sandbox Code Playgroud)

    其中mycrl.cnf包含以下内容:

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

openssl ca 可能是更适合你想要做的命令,因为你会发现大多数例子都依赖于使用openssl.cnf中的各种设置进行v3扩展的命令.

旁白:在证书中使用MD5消息摘要是不可取的.

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

例如,您可以在使用-md sha256选项openssl ca(或default_md=sha256[CA_default]配置部分中设置)对请求进行签名时使用SHA256 .