如何使用包括 CRL 分发点的 openssl 创建证书?
Posted
技术标签:
【中文标题】如何使用包括 CRL 分发点的 openssl 创建证书?【英文标题】:Howto create a certificate using openssl including a CRL distribution point? 【发布时间】:2012-08-11 13:27:15 【问题描述】:我在使用 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】:openssl x509
不会读取您在上面的配置文件中指定的扩展配置。
您可以(至少)通过以下两种方式将crlDistributionPoints
放入您的证书中:
使用openssl ca
而不是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
包含以下内容:
crlDistributionPoints=URI:http://example.com/crl.pem
openssl ca
可能是更适合您想要执行的命令,因为您会发现大多数示例都依赖于该命令,该命令利用 openssl.cnf 中的各种设置进行 v3 扩展。
顺便说一句:在证书中使用 MD5 消息摘要是inadvisable。
以前建议使用 SHA1 替代 MD5,但现在也已弃用。您可以指定请求和签名操作中使用的消息摘要,您可以使用openssl list-message-digest-commands
列出支持的消息摘要。
例如,您可以在将-md sha256
选项设置为openssl ca
(或在[CA_default]
配置部分中设置default_md=sha256
)签署请求时使用SHA256。
【讨论】:
是的,成功了!因为它只是一个测试系统安全性并不是这里的重点。不过还是感谢您提供有关 MD5 的信息。以上是关于如何使用包括 CRL 分发点的 openssl 创建证书?的主要内容,如果未能解决你的问题,请参考以下文章