我正在使用以下命令生成根CA:
openssl genrsa -aes256 -out ca.key.pem -passout pass:KeyPassword 4096
openssl req -key ca.key.pem -passin pass:Password -new -x509 -days 365 -sha256 -out ca.root.pem
然后使用以下命令创建签名的用户证书(不使用中间证书):
1)为用户生成密钥
openssl req -newkey rsa:2048 -nodes -keyout keyname.pem -days 365
2)创建CSR
openssl req -out keyname.csr -key keyname.pem -new -days 365
3)使用root cert签名密钥
openssl ca -batch -create_serial -config openssl.cnf -cert ca.root.pem -keyfile ca.key.pem -passin pass:KeyFinalPassword -in keyname.csr -out certname.pem
4)生成.p12文件
openssl pkcs12 -name username -inkey keyname.pem -in certname.pem -export -out username.p12 -password pass:password
注意-我在openssl.cnf中添加了crlDistributionPoints = URI:http://localhost:8000/crl/distripoint.crl.pem以及以下选项:
# For certificate revocation lists.
# crlDistributionPoints = URI:http://HOSTNAME/crl/distripoint.crl.pem
crlDistributionPoints = URI:http://localhost:8000/crl/distripoint.crl.pem
crlnumber = $dir/config/crl/crlnumber
crl = $dir/config/crl/ca.crl.pem
crl_extensions = crl_ext
default_crl_days = 60
注意-我使用this tutorial
生成了distribution.crl.pem答案 0 :(得分:1)
必须将crlDistributionPoints
参数添加到所使用的CA的x509_extensions
部分中。 (在您的示例中,您似乎已将此参数添加到了CA部分本身。)
openssl ca
在这些行中使用openssl.cnf
,将CRL Distribution Points
扩展名添加到已颁发的证书中:
[ ca ]
default_ca = CA_default
[ CA_default ]
(...other parameters...)
x509_extensions = added-extensions
[ added-extensions ]
crlDistributionPoints = URI:http://localhost:8000/crl/distripoint.crl.pem
您可能想对openssl.cnf
和req
命令使用自定义的ca
而不是默认值;默认值包含许多示例条目,这些条目可能无法满足您的要求。这是examples of minimal openssl.cnf
。
(请注意:您上一个生成.p12文件的命令与该问题无关;它只打包了已创建的证书的另一种格式。)