Openssl 通过签署CSR创建x509 v3用户证书

Openssl 通过签署CSR创建x509 v3用户证书,openssl,certificate,x509,csr,code-signing-certificate,Openssl,Certificate,X509,Csr,Code Signing Certificate,我知道如何使用openssl签署CSR,但结果证书是X509V1,而不是v3 我正在使用以下命令: x509 -req -days 365 -in myCSR.csr -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt 我已经搜索过了,但没有找到解决办法。是否有其他方法可以通过编程方式执行此操作?您需要指定扩展名文件 例如: openssl x509 -days 365 -in myCSR.csr -ext

我知道如何使用openssl签署CSR,但结果证书是X509V1,而不是v3

我正在使用以下命令:

x509 -req -days 365 -in myCSR.csr -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt

我已经搜索过了,但没有找到解决办法。是否有其他方法可以通过编程方式执行此操作?

您需要指定扩展名文件

例如:

openssl x509 -days 365 -in myCSR.csr -extfile v3.ext -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt
扩展名文件(v3.ext)可以如下所示:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

如果您也有-req,那么gtrig的答案也会起作用。对我来说,没有这些就不行

因此,命令是:

openssl x509 -req -in myCSR.csr -extfile v3.ext -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt  -days 365

(必须给出新的答案,因为我没有足够的代表发表评论)。

这可能是一个好地方,可以说您可以通过添加一行来指定扩展文件中的SAN(主题替代名称):
subjectAltName=DNS:hostname,IP:192.168.7.1
。您可以省略DNS或IP部分,但不要忘记删除逗号。