比较* .csr和* .pem文件是否匹配

时间:2014-05-08 15:43:29

标签: openssl ssl-certificate pki

由于我不熟悉生成密钥和证书,我当时做了一些测试。现在我觉得某一对可能已经混淆了。

我有一个RSA私钥文件:

-----BEGIN RSA PRIVATE KEY-----
             ...
-----END RSA PRIVATE KEY-----

并将证书签名请求文件发送给另一方:

-----BEGIN CERTIFICATE REQUEST-----
              ...
-----END CERTIFICATE REQUEST-----

虽然尝试通过网络上的信息检查匹配,但值得注意的是:

openssl x509 -noout -modulus -in cert.csr | openssl md5

给出以下错误:

unable to load certificate
4980:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

虽然它仍然给我和md5哈希。在私钥上运行类似的命令会产生另一个md5。由于这些不匹配,我现在可以假设,csr不是从密钥生成的吗?

我能够使用以下命令检查csr中的存储值:

openssl req -in cert.csr -noout -text

我尝试使用相同的值生成一个新的。这并没有给我完全相同的结果 - 只有前三行是相同的。

有没有办法检查csr和pem文件是否真的匹配还是混淆了?

2 个答案:

答案 0 :(得分:1)

在linux框中运行这些命令,并验证其md5值是否相等。

$ openssl rsa -noout -modulus -in key.pem | openssl md5
$ openssl req -noout -modulus -in key.csr | openssl md5
$ openssl x509 -noout -modulus -in key.crt | openssl md5

答案 1 :(得分:0)

好的,所以我明白了,因为我自己并没有在网上找到合适的答案,以防万一其他人需要它......可能不是最好的方法,但至少给出了理想的结果

我跑了两个命令。这个私钥文件:

openssl rsa -noout -modulus -in key.pem 

证书上的以下内容:

openssl req -noout -modulus -in cert.csr

如果输出匹配,则密钥和证书匹配。

找到正确的私钥,并能够从存储库中恢复正确的私钥。