我正在尝试向自签名证书添加自定义扩展。我尝试了以下操作
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -extfile myconfig.cnf -extensions v3_req
错误是
unknown option -extfile
我的配置
[req]
req_extensions = v3_req
[v3_req]
1.2.3.4.5.6.7.8=ASN1:UTF8String:Something
当我删除-extfile myconfig.cnf -extensions v3_req
,我看到 cert.pem 已成功创建。
我确实看到 -extfile 不是一个有效的选项。但是,我看到其他帖子也建议同样的 Openssl 自定义扩展
编辑
我使用了-config
,-extfile
但出现以下错误
unable to find 'distinguished_name' in config
problems making Certificate Request
4646921836:error:0EFFF06C:configuration file routines:CRYPTO_internal:no value:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/conf/conf_lib.c:322:group=req name=distinguished_name
答案1
您的配置文件包含两个小错误:
- 当调用
-x509
要求不寻找req_extensions
,而是寻找x509_extensions
部分, - 您的配置文件不包含专有名称属性,这是唯一没有默认值的证书属性。
因此最小的配置文件看起来应该是这样的:
[ req ]
distinguished_name = dn
x509_extensions = extensions
prompt = no
[ extensions ]
1.2.3.4 = ASN1:UTF8String:Something
[ dn ]
0.DC = com
1.DC = example
commonName = example.com
该prompt
选项禁用提示输入可分辨名称 RDN。您可以使用以下命令生成证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem\
-days 365 -config myconfig.cnf
当然,更完整的示例应该在部分中包含一些标准扩展[ extensions ]
,您可以在标准 OpenSSL 配置中找到它们:
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
答案2
您需要使用-config
选项来指定配置,而不是-extfile
。 在您的例子中,此文件应该有一个[v3_req]
部分。
有关详细信息,请参阅openssl 请求请参阅手册页。