我们已经从 RapidSSL 购买了 SHA-2 证书,但我无论如何也用不了它!我们首先创建了。钥匙和.crt目标服务器上的文件,使用(显然重要内容已被删除);
openssl req -new -newkey rsa:2048 -nodes -out www_x.com.csr -keyout www_x_com.key -subj "/C=GB/ST=x/L=x/O=x/CN=www.x.com"
这创造了.crt和 .key 文件都很好。现在,我将他们发给我的证书保存为主文件。然后,他们给我发了一封电子邮件:
https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=AR1549
在这里,他们有 2 个 SHA-2 中级证书...我假设这是我需要的第二个?(甚至不确定第一个是什么!)
然后,保存文件后cat
:
cat www_x.com.csr CA_Cert.crt > new.crt
(也尝试了其他方法:cat CA_Cert.crt www_x.com.csr > new.crt
,但都不起作用)
然后,在我的 nginx 配置中我有:
ssl on;
ssl_certificate /home/test/certs/new.crt;
ssl_certificate_key /home/test/certs/www_x_com.key;
..然后当我重新启动时,出现失败错误:
nginx[30762]: nginx: [emerg] SSL_CTX_use_PrivateKey_file(“/home/test/certs/www_x_com.key”) 失败(SSL: 错误:0B080074:x509 证书例程:X509_check_private_key: 密钥值不匹配)
有人能帮忙吗?我习惯于用 ZIP 文件来获取我需要的所有东西...但这些家伙却不是这样!
更新:一切正常!感谢大家的帮助。结果却是双重打击:
1) 我为之做这件事的人(购买了 SSL 证书的人)在生成证书时没有想到要输入 CSR 代码 =) 2)cat
证书没有间断 - 所以它将其全部读取为一行
除此之外,现在一切似乎都正常了。很高兴那些问题都解决了,它们让我抓狂不已!!!
答案1
从评论中的确认以及你在问题中提出的内容来看
cat www_x.com.csr CA_Cert.crt > new.crt
你应该做的是
cat x.com.crt CA_Cert.crt > new.crt
csr 用于传递给 CA(在本例中为 RapidSSL),以便他们创建 crt。
答案2
“密钥值不匹配”意味着您指向 nginx 的私钥与相应证书中的公钥派生自的私钥不同。正如 Drifter104 提到的,您似乎将 CSR 与中间 CA 证书连接在一起,这肯定会导致此问题(nginx 将跳过 CSR 并假定中间证书是最终实体证书,这会导致此问题)。否则,您就把密钥弄混了,如果您找不到正确的密钥,则需要从 CA 重新签名。