2013-07-17 27 views
1

我使用軟件(Dakota)生成了P10證書和認證申請人文檔。該文件包含一個哈希碼。這個哈希碼應該是證書公鑰的SHA1哈希值。CSR的Hash代碼

要驗證這一點,我使用openssl將P10證書轉換爲PEM格式的證書。 然後我使用openssl提取了這個PEM證書的公鑰。 在此公鑰上應用SHA1哈希算法時,我獲得的哈希碼與由Dakota Software自動生成的哈希碼不同。

我做錯了什麼?

回答

0

我可以在這裏想到2個可能的問題。首先,您是PEM格式的公鑰嗎?如果是這樣,你可能會想在將它轉換爲SHA1哈希之前將其轉換爲DER格式。

第二個可能的問題是散列可能不僅僅是公鑰的散列。它可能是公鑰的名稱,可分辨名稱和可選的一組證書屬性。這些組件構成了CSR和簽名。

我不知道爲什麼哈希是在那裏。如果簽名是CSR的一部分,那麼散列確實不是必需的。

+0

我已將公鑰轉換爲DER格式,並嘗試將散列應用於完整的CSR(包括p10格式和PEM格式)。在所有情況下,生成的散列值都不匹配。 – DanMatlin

+1

當您創建CSR時,會獲取專有名稱,公鑰和其他證書屬性的哈希。這個散列是簽名的,並且簽名被包含在CSR的一部分中。如果您所談論的散列與簽名所基於的散列相同,則您將無法僅採用CSR的SHA1散列。您必須在十六進制編輯器中打開CSR,移除簽名算法,簽名和第一個ASN.1頭字節。然後,您可以對剩下的內容進行SHA1哈希處理,這將與簽名所基於的哈希相匹配。 – gtrig