English: What does openssl x509 -hash
calculate the hash of?
1
2
|
openssl req -out example.crt -keyout example.key -newkey rsa:2048 -nodes -x509 -subj '/C=US/CN=example.com' -days 3650
openssl x509 -in example.crt -hash -noout # 8927dc31
|
の 8927dc31
は、subject (-issuer_hash
ならissuer) のASN.1表現のsha1ハッシュ。以下のように計算できる。
1
2
3
4
5
6
7
8
9
|
echo '
310b30 09060355
04060c02 75733114
30120603 5504030c
0b657861 6d706c65
2e636f6d
' | xxd -r -p | sha1sum
# => 31dc2789c1e1182fbfbb64ee0a0c9a6e11276f97 -
# 31 dc 27 89 --CPUがリトルエンディアンなら反転--> 89 27 dc 31 -> 8927dc31
|
この 310b30...
というのは wireshark example.crt
で見つかる。
最後の反転は違和感がある。エンディアンが異なると値が変わっちゃうし。
ここで ntohl()
すべきだったのだろうと思う。
ちなみにsubjectが空なら空データのsha1になる。
1
2
3
4
5
|
openssl req -out example.crt -keyout example.key -newkey rsa:2048 -nodes -x509 -subj '/' -days 3650
openssl x509 -in example.crt -hash -noout # eea339da
sha1sum </dev/null
# => da39a3ee5e6b4b0d3255bfef95601890afd80709 -
# da 39 a3 ee ... -> flip bytes: ee a3 39 da: eea339da
|