我需要基于无法访问私钥的第三方生成的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。
答案 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
选项的含义-
要使用“证书签名”密钥用法(以及您可能需要的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