尝试使用 openSSL 向 X509 证书添加自定义扩展时出错

尝试使用 openSSL 向 X509 证书添加自定义扩展时出错

我正在尝试向自签名证书添加自定义扩展。我尝试了以下操作

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

您的配置文件包含两个小错误:

  1. 当调用-x509 要求不寻找req_extensions,而是寻找x509_extensions部分,
  2. 您的配置文件不包含专有名称属性,这是唯一没有默认值的证书属性。

因此最小的配置文件看起来应该是这样的:

[ 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 请求请参阅手册页。

相关内容