當前位置:
首頁 > 最新 > 一文解剖centos,curl,nss更新根證書的細節

一文解剖centos,curl,nss更新根證書的細節

歡迎關注我的公眾號(虞大膽的嘰嘰喳喳,yudadanwx),了解我的最新原創文章。

這篇文章是《一文解剖ubuntu,curl,openssl更新根證書的細節》的姐妹篇,主要描述在 CentOS 系統中基於 NSS 的 SSL 客戶端(比如 curl)是如何更新根證書的(這段話請仔細理解)。


順藤摸瓜找到 ca-certificates

其實在 CentOS 中,如果基於 Yum 包安裝,基於 OpenSSL 庫的應用程序和基於 NSS 庫的應用程序使用的證書路徑是一樣的,默認其引用的根證書集合文件都是 /etc/pki/tls/certs/ca-bundle.crt。

什麼是集合文件呢,和 Ubuntu 中的 /etc/ssl/certs/ca-certificates.crt 文件一樣,ca-bundle.crt 文件包含了所有的 CA 根證書。

通過下列命令查看 OpenSSL 默認引用的根證書集合文件:

通過下列命令查看 Curl 默認引用的根證書集合文件:

現在的關鍵就是 /etc/pki/tls/certs/ca-bundle.crt 是誰更新的?和 Ubuntu 一樣,該文件也是由 ca-certificates 包提供的(但兩者的運作模式完全不一樣,只是包名相同)。

運行如下命令了解 ca-certificates 包的詳細信息:

關鍵輸出如下:

這個包是由 Mozilla 官方提供的,可見 CentOS 極力使用 Mozilla 的 NSS 密碼學庫,才讓 Mozilla 如此重視。

可能有的同學很奇怪了,在 CentOS 系統下,Curl 既然使用 NSS 密碼學庫,為什麼不使用 cert9.db 文件呢?其實很多使用 NSS 密碼學庫的應用程序(除了 Firefox)很少直接使用 cert9.db,轉而使用集成的 pem 證書文件 ca-bundle.crt。

如果本機沒有安裝 ca-certificates,運行下列命令即可:

看看該包安裝那些文件,運行下列命令:

最主要的類型文件包括:

1:/etc/pki/tls/certs/ca-bundle.crt

和 Ubuntu 的 ca-certificates 包不一樣,安裝的文件只有一個集合文件,每個 CA 機構的根證書沒有單獨的文件

2:/usr/bin/update-ca-trust

這個命令行工具的作用接下去講解。


1:mk-ca-bundle.pl 動態更新

如果 Mozilla 維護的 CA 根證書列表發生了變化,而 ca-certificates 包的更新可能滯後,那麼可以使用 mk-ca-bundle.pl 工具快速更新。

具體命令如下:

2:通過 update-ca-trust 工具更新 Shared System CA Store

如果你有一個自簽名證書,或者有一個私有 CA 根證書,想將其加入到本地 CA 根證書列表中,可以使用該工具。在《一文解剖ubuntu,curl,openssl更新根證書的細節》也沒有說明如何更新自簽名證書(或一個私有 CA 根證書),關於這個主題,自己打算以後再重點描述,相信很多人會感興趣。

在本文和《一文解剖ubuntu,curl,openssl更新根證書的細節》這篇文章中,主要了解了如何將 Mozilla 的根證書同步給 OpenSSL 或者 NSS 庫的本地根證書列表,從而基於它們的應用程序(比如 Curl)就可以使用本地根證書了。

可能很多同學很奇怪,為什麼我最近寫了很多 curl、nss 相關方面的文章?原因在於這些主題在我的新書《深入淺出HTTPS:從原理到實戰》中描述的不多,也不系統,而這些主題同學們在工作、學習過程中有很大幾率會用到,所以系統性的做一些介紹。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 虞大膽的嘰嘰喳喳 的精彩文章:

strace幫助你調試PHP代碼

TAG:虞大膽的嘰嘰喳喳 |