Ssl

為什麼 /etc/ssl/certs 中有這麼多奇怪的證書文件名以 0 結尾?

  • April 13, 2022

我們知道 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 結尾?

這些值是證書的散列結果(準確地說:今天的散列基於規範形式的主題 (DN) 的 SHA1 散列)以加快它們的查找速度。最後一位數字是元素鍊錶中的索引,以防發生散列衝突,散列到相同的值。

這記錄在openssl rehash

rehash掃描目錄併計算指定目錄列表中每個“.pem”、“.crt”、“.cer”或“.crl”文件的雜湊值,並為每個文件創建符號連結,其中****連結的名稱是雜湊值。(如果平台不支持符號連結,則製作一個副本。) 此實用程序很有用,因為許多使用 OpenSSL 的程序需要像這樣設置目錄才能找到證書

至於最後一位(在發生雜湊衝突之前為 0):

創建的連結採用“HHHHHHHH.D”形式,其中每個 H 是一個

十六進製字元,D 是一個十進制數字。處理目錄時,rehash 將首先刪除所有具有該語法名稱的連結,即使它們被用於其他目的。要跳過刪除步驟,請使用 -n 標誌。CRL 的雜湊看起來很相似,除了字母 r 出現在句點之後,就像這樣:“HHHHHHHH.rD”。

多個對象可能具有相同的雜湊值;它們將通過增加 D 值來指示。通過比較完整的 SHA-1 指紋來發現重複項。如果發現重複,將顯示警告。

引用自:https://unix.stackexchange.com/questions/698814