由于我不熟悉生成密钥和证书,我当时做了一些测试。现在我觉得某一对可能已经混淆了。
我有一个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文件是否真的匹配还是混淆了?
答案 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
如果输出匹配,则密钥和证书匹配。
找到正确的私钥,并能够从存储库中恢复正确的私钥。