gpt4 book ai didi

openssl - `openssl x509 -hash` 计算的哈希是什么?

转载 作者:行者123 更新时间:2023-12-05 05:47:31 26 4
gpt4 key购买 nike

在以下命令中,openssl x509 -in example.crt -hash -noout 输出 8927dc31

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

openssl-x509(1)只是说它是主题名称的“散列”。

       -subject_hash
Outputs the "hash" of the certificate subject name. This is used in OpenSSL to form an index to allow certificates in a
directory to be looked up by subject name.

-issuer_hash
Outputs the "hash" of the certificate issuer name.

-hash
Synonym for "-subject_hash" for backward compatibility reasons.
  • 什么是“哈希”函数? (sha1?md5?)
  • “主题名称”到底是什么? (主题:C = US,CN = example.comopenssl x509 -in example.crt -text 中?)
  • 我可以使用命令行重现相同的哈希值吗?

最佳答案

ASN.1 编码主题值(-issuer_hash 的发行者值)的 sha1 散列的前 4 个字节(8 个十六进制字母)。

您可以使用以下命令重现哈希:

echo '
310b30 09060355
04060c02 75733114
30120603 5504030c
0b657861 6d706c65
2e636f6d
' | xxd -r -p | sha1sum
# => 31dc2789c1e1182fbfbb64ee0a0c9a6e11276f97 -

前 4 个字节是 31dc2789。如果 openssl 运行的 CPU 是 little-endian(包括 x86_64),openssl 反转字节 [1] (31 dc 27 8989 27 dc 31) 然后打印 8927dc31

wireshark example.crt 找到了 ASN.1 编码的主题值 310b30...

Finding out the ASN.1-encoded subject value with Wireshark

如果主题为空(-subj '/'),哈希为空数据的sha1。

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

[1]:这对我来说看起来很不自然。我考虑 this应该是 ntohl()ed。

关于openssl - `openssl x509 -hash` 计算的哈希是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71004481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com