为什么 /etc/ssl/certs 中有这么多奇怪的以 0 结尾的证书文件名?

为什么 /etc/ssl/certs 中有这么多奇怪的以 0 结尾的证书文件名?

众所周知,CA 证书位于/etc/ssl/certsdebian 中。

cd  /etc/ssl/certs
ls | grep  0$ |wc -l
126

我将其中的一部分粘贴在这里:

f081611a.0
f0c70a8d.0
f249de83.0
f30dd6ad.0
f3377b1b.0
f387163d.0
f39fc864.0
f51bb24c.0
fc5a8f99.0
fe8a2cd8.0

为什么 /etc/ssl/certs 中有这么多奇怪的证书文件名以 0 结尾?

答案1

这些值是证书的哈希结果(准确地说:今天的哈希值基于主题 (DN) 的 SHA1 哈希值以规范形式)以加快查找速度。最后一位数字是元素链表中的索引,在情况下散列到相同的值哈希冲突发生。

这记录在openssl rehash

重新散列扫描目录并计算指定目录列表中每个“.pem”、“.crt”、“.cer”或“.crl”文件的哈希值并创建符号链接对于每个文件,其中链接的名称是哈希值。 (如果平台不支持符号链接,则会制作副本。) 该实用程序非常有用,因为许多使用 OpenSSL 的程序都需要像这样设置目录才能查找证书

至于最后一位数字(在发生哈希冲突之前为 0):

创建的链接的形式为“HHHHHHHH.D”,其中每个 H 是一个
十六进制字符,D 是一个十进制数字。处理目录时,rehash 将首先删除具有该语法名称的所有链接,即使它们正用于其他目的。要跳过删除步骤,请使用 -n 标志。 CRL 的哈希值看起来很相似,只是字母 r 出现在句点之后,如下所示:“HHHHHHHH.rD”。

多个对象可能具有相同的哈希值;它们将通过增加 D 值来表示。通过比较完整的 SHA-1 指纹来发现重复项。如果发现重复项,将会显示警告。

相关内容