Openssl从CSR创建证书(无私钥 - 存储在另一个系统中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openssl从CSR创建证书(无私钥 - 存储在另一个系统中)相关的知识,希望对你有一定的参考价值。

我需要根据第三方生成的CSR创建证书,我无法访问私钥。生成的证书需要将keyUsage = keyCertSign作为证书的一部分。

C:/OpenSSL-Win32/bin/openssl.exe req -in C:/xampp/htdocs/certs/test.csr -out test.cer -config C:/xampp/htdocs/command.cnf

这当然没有用。

这可能吗?如果不能使用certreq代替?我们使用的PKI服务器是Microsoft Based。

答案

如果您有权访问私钥,则可以创建自签名证书。根据您的具体情况,您可能会遇到受信任证书的问题。

如果你不这样做,那么需要设置一个CA。如果您设置了CA(并非那么难),那么您的问题是您需要将CA公钥安装到连接到服务器的所有计算机和设备的可信CA列表中,该服务器将返回您生成的证书。这就是您为“受信任的”CA签名证书付费的原因,因为在尽可能多的机器和设备上安装根CA证书存在问题,并且还要使根CA证书保持最新。

另一答案

给定证书(ca-cert.pem)及其私钥(ca-key.pem),使用OpenSSL签署提供的CSR(csr.pem)并为其生成证书(cert.pem) -

openssl x509 -req -in csr.pem -out cert.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 365 -sha256

选项的含义 -

  • -CAcreateserial - 将为证书随机生成序列号(并在将来的激活中增加)。
  • -days 365 - 证书的有效期为365天。
  • -sha256 - 证书将使用SHA256作为其签名算法(这是默认值)。

要生成具有“证书签名”密钥用法的此类证书(以及您可能需要的CA基本约束),请创建配置文件(config.txt) -

[extensions]
keyUsage = keyCertSign
basicConstraints = CA:TRUE

并将它提供给OpenSSL(指向“扩展”部分) -

openssl x509 -req -in csr.pem -out cert.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 365 -sha256 -extfile config.txt -extensions extensions

检查生成的证书 -

openssl x509 -in cert.pem -noout -text

它有 -

X509v3 extensions:
  X509v3 Key Usage:
    Certificate Sign
  X509v3 Basic Constraints:
    CA:TRUE

为了完整起见,以下是如何创建“提供的”CA密钥,CA自签名证书,主题密钥和CSR(此处使用RSA密钥,EC密钥可以使用相同的方式) -

CA密钥 -

openssl genpkey -algorithm RSA -out ca-key.pem -pkeyopt rsa_keygen_bits:2048

CA自签名证书 -

openssl req -key ca-key.pem -new -x509 -days 365 -out ca-cert.pem -sha256 -subj /CN=CACert

主题键 -

openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048

主题密钥的CSR -

openssl req -new -key key.pem -out csr.pem -sha256 -subj /CN=SubjectCert

以上是关于Openssl从CSR创建证书(无私钥 - 存储在另一个系统中)的主要内容,如果未能解决你的问题,请参考以下文章

openssl生成自签名证书

如何创建一个自签名的SSL证书

使用Openssl生成自签名证书

如何创建一个自签名的SSL证书

如何创建一个自签名的SSL证书

使用openssl生成/签发证书的原理流程与示例