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

时间:2012-08-15 08:25:16

标签: openssl x509 certificate-revocation

我在使用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

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

[ 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

有什么想法吗?

1 个答案:

答案 0 :(得分: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`
    

    mycrl.cnf包含以下内容:

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

  3. openssl ca可能是更适合您想要做的命令,因为大多数示例都会依赖于该命令,利用openssl.cnf中的各种设置来实现v3扩展。

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

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

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