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

Posted

技术标签:

【中文标题】通过签署 CSR 创建 x509 v3 用户证书【英文标题】:Creating an x509 v3 user certificate by signing CSR 【发布时间】:2013-08-16 12:42:46 【问题描述】:

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

我正在使用以下命令:

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

我已搜索但未能找到解决方案。是否有另一种以编程方式执行此操作的方法?

【问题讨论】:

【参考方案1】:

您需要指定一个扩展文件。

例如:

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

【讨论】:

这可能是一个好地方,您可以通过添加一行来在扩展文件中指定 SAN(主题备用名称):subjectAltName=DNS:hostname, IP:192.168.7.1。您可以省略 DNS 或 IP 部分,但不要忘记删除逗号。 More info here.【参考方案2】:

如果您也有 -req,则 gtrig 的答案也有效。没有它对我来说是行不通的。

所以命令是:

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

(不得不给出一个新的答案,因为我没有足够的代表发表评论)。

【讨论】:

以上是关于通过签署 CSR 创建 x509 v3 用户证书的主要内容,如果未能解决你的问题,请参考以下文章

linux下使用openssl生成https的crt和key证书

使用 x509 证书签署 JWT 令牌时遇到问题

x509:由未知权威 CMD K6.io 签署的证书

错误:x509:证书由未知机构签署,种类为群集

x509:由未知机构签署的证书 [ ngrok ]

为啥签署 CSR 需要指定 CA 证书