2012-08-15 45 views
4

我在使用openssl创建一个包含用于测试的crl分发点的x509证书时遇到了问题。如何使用包含CRL分发点的openssl创建证书?

我检查了文档,发现配置设置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 

任何想法?

回答

11

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

openssl ca可能是命令更适合你想要做什么,因为大多数你会发现依靠这个命令利用openssl.cnf中的各种设置进行v3扩展。

另外:在证书中使用MD5消息摘要是inadvisable

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

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

+1

是的,工作! 由于其唯一的测试系统安全性并不是这里的重点。但是,无论如何感谢关于MD5的信息。 – 2012-08-27 09:53:28