【问题标题】:Comparing if *.csr and *.pem files match比较 *.csr 和 *.pem 文件是否匹配
【发布时间】:2014-06-26 02:56:04
【问题描述】:

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

我有一个 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 文件是否真的匹配或是否存在混淆?

【问题讨论】:

标签: openssl ssl-certificate pki


【解决方案1】:

在 linux box 中运行这些命令并验证它们的 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

【讨论】:

    【解决方案2】:

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

    我运行了两个命令。私钥文件上的这个:

    openssl rsa -noout -modulus -in key.pem 
    

    证书上有以下内容:

    openssl req -noout -modulus -in cert.csr
    

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

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

    【讨论】:

    • 证书将密钥绑定到身份。身份由专有名称表示。所以我相当确定 Subject Distinguished NamePublic Key 都需要匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多