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

Hex*_*ega 27 openssl certificate csr code-signing-certificate x509

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

我正在使用以下命令:

x509 -req -days 365 -in myCSR.csr -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt
Run Code Online (Sandbox Code Playgroud)

我搜索过,但一直无法找到解决方案.有没有其他方式以编程方式执行此操作?

gtr*_*rig 40

您需要指定扩展文件.

例如:

openssl x509 -days 365 -in myCSR.csr -extfile v3.ext -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt
Run Code Online (Sandbox Code Playgroud)

扩展文件(v3.ext)可能如下所示:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
Run Code Online (Sandbox Code Playgroud)

  • 这可能是说您可以通过添加一行在扩展文件中指定 *SAN*(主题备用名称)的好地方:`subjectAltName=DNS:hostname, IP:192.168.7.1`。您可以省略 DNS 或 IP 部分,但不要忘记删除逗号。[更多信息](https://www.openssl.org/docs/manmaster/man5/x509v3_config.html)。 (5认同)
  • 谢谢,这正是我所需要的!完美运作 (2认同)

小智 6

如果您也有 -req,则 gtrig 的答案有效。没有它对我来说就不起作用。

所以命令是:

openssl x509 -req -in myCSR.csr -extfile v3.ext -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crt  -days 365
Run Code Online (Sandbox Code Playgroud)

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