2016-07-06 10 views
1

これまでの学習目的では、Javaのkeytoolを使用してSHA2証明書を生成しようとしています。しかし、鍵を生成すると、Certificate FingerprintはSHA2でなくSHA1であると言われています。Java Keytoolは、SHA2が指定されていても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フィンガープリントが必要な場合は、すべての組み合わせについて同様に続けることができます。 sigalgを含め、証明書の(ほとんどの)詳細を見るには '-list -v'を試してください。 –

+0

ありがとうございます。私は質問を更新します。私は間違っていた。あなたは正しい。 – Pred

答えて

2

SHA-1指紋は、バイナリ(DER)でエンコードされた証明書で計算されます。 Daveがすでに規定しているように、証明書には含まれておらず、tbsCertificate(署名された証明書の一部)上の署名には関係しません。実際には、証明書全体に渡っているので、署名アルゴリズム参照(OID)と署名自体も指紋データに含まれています。


SHA-1を使用して証明書のフィンガープリントはSHA-1を用いて証明書に署名と同じくらい安全であることに注意してください。指紋の使用方法によって異なりますが、原則として、SHA-1が壊れている場合(またはその時)に脆弱性が導入される可能性があります。

+1

誰かがコメントの外で答えなければならない、そうですか? –

関連する問題