【问题标题】:HashCode for a CSRCSR 的哈希码
【发布时间】:2013-07-15 13:07:13
【问题描述】:

我已使用软件(达科他州)生成了 P10 证书和认证申请人文件。该文档包含一个哈希码。此哈希码应该是证书公钥的 SHA1 哈希。

为了验证这一点,我使用 openssl 将 P10 证书转换为 PEM 格式证书。 然后我使用 openssl 提取了这个 PEM 证书的公钥。 在此公钥上应用 SHA1 哈希算法时,我获得的哈希码与 Dakota 软件自动生成的哈希码不同。

我做错了吗?

【问题讨论】:

    标签: openssl certificate sha1 public-key-encryption csr


    【解决方案1】:

    我可以在这里想到 2 个可能的问题。首先,您的公钥是 PEM 格式的吗?如果是这样,您可能希望在获取它的 SHA1 哈希之前将其转换为 DER 格式。

    第二个可能的问题是散列可能不仅仅是公钥的散列。它可能是公钥、专有名称和可选的一组证书属性的散列。这些组件与签名一起构成 CSR。

    我不知道为什么哈希甚至在那里。如果签名是 CSR 的一部分,则实际上不需要哈希。

    【讨论】:

    • 我已将公钥转换为 DER 格式,并尝试将哈希应用于完整的 CSR(p10 格式和 PEM 格式)。在所有情况下,生成的哈希值都不匹配。
    • 当您创建 CSR 时,会获取可分辨名称、公钥和其他证书属性的哈希值。此哈希已签名,并且签名包含在 CSR 中。如果您所说的哈希与签名所基于的哈希相同,您将无法仅获取 CSR 的 SHA1 哈希。您必须在十六进制编辑器中打开 CSR,删除签名算法、签名和第一个 ASN.1 标头字节。然后您可以获取剩余内容的 SHA1 哈希,这将匹配签名所基于的哈希。
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2012-07-07
    • 2012-04-23
    • 1970-01-01
    • 2017-12-01
    • 2019-05-03
    相关资源
    最近更新 更多