2016-07-06 84 views
1

對於目前爲止的主要學習目的,我試圖使用Java的keytool生成SHA2證書。但是,當我生成密鑰時,它說證書指紋是SHA1,而不是SHA2。即使指定了SHA2,Java Keytool也會創建SHA1證書

keytool -genkey -alias test_sha2_rsa_key -keyalg RSA -keysize 2048 -keystore .keystore -sigalg "SHA256withRSA" 

這是列出鍵時的結果。

keytool -list 
Enter keystore password: 

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

test_sha2_rsa_key, Jul 6, 2016, PrivateKeyEntry, 
Certificate fingerprint (SHA1): DD:9E:55:B7:90:9F:91:6C:68:D3:5C:24:E7:D4:45:D1:7D:8C:3A:5A 

我看到這個錯誤,或者做錯了嗎?

+4

指紋與簽名無關。您可以擁有MD5,SHA1,SHA256,以及如果您希望使用SHA512簽名的證書的Whirpool和/或Skein指紋等等。試試'-list -v'來查看(大部分)證書的細節,包括sigalg。 –

+0

謝謝。我會更新這個問題。我錯了。你說得對。 – Pred

回答

2

通過二進制(DER)編碼證書計算SHA-1指紋。它不包含在證書中,並且正如戴夫已經規定的那樣 - 與tbsCertificate(證書的「待簽署部分」)的簽名無關。實際上,由於它是在整個證書上,簽名算法引用(OID)和簽名本身也包含在指紋數據中。


請注意,使用SHA-1指紋證書與使用SHA-1簽署證書一樣安全。這取決於如何使用指紋,但原則上如果(或何時)SHA-1中斷可能會引入漏洞。

+1

那麼,有人必須回答評論之外,對吧? –

相關問題