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

时间:2019-01-29 13:13:29

标签: openssl

我需要基于无法访问私钥的第三方生成的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。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

给出一个证书(ca-cert.pem)及其私钥(ca-key.pem),使用OpenSSL签名提供的CSR(csr.pem)并为其生成证书(cert.pem)-< / p>

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

选项的含义-

  • -CAcreateserial -会为证书随机生成序列号(并在以后的激活中增加)。
  • -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