1. 程式人生 > 其它 >LINUX_新增根證書信任源

LINUX_新增根證書信任源

技術標籤:Linux

簡介

某三方機構需要更換https證書,通知客戶檢測是否支援新證書加密演算法,先給一個域名配置了新證書 客戶在在自己服務端測試是否支援新證書

過程

在三方機構傳送的郵件中包含證書和操作步驟,但操作步驟中的三個方法都是針對Java程式來進行操作的,沒有針對系統的。而我們業務都是通過nginx反向代理去請求三方的,所以需要其他的方法。

SSL證書解析流程

推薦去下面的博文學習,下面內容就是從博文中拿出來的
HTTPS協議原理和流程分析

HTTPS協議原理和流程分析

如上圖所示,在第 ② 步時伺服器傳送了一個SSL證書給客戶端,SSL 證書中包含的具體內容有:
(1)證書的釋出機構CA
(2)證書的有效期

(3)公鑰
(4)證書所有者
(5)簽名
………
客戶端在接受到服務端發來的SSL證書時,會對證書的真偽進行校驗,以瀏覽器為例說明如下:
(1)首先瀏覽器讀取證書中的證書所有者、有效期等資訊進行一一校驗;
(2)瀏覽器開始查詢作業系統中已內建的受信任的證書釋出機構CA,與伺服器發來的證書中的頒發者CA比對,用於校驗證書是否為合法機構頒發;
(3)如果找不到,瀏覽器就會報錯,說明伺服器發來的證書是不可信任的;
(4)如果找到,那麼瀏覽器就會從作業系統中取出 頒發者CA 的公鑰,然後對伺服器發來的證書裡面的簽名進行解密;
(5)瀏覽器使用相同的hash演算法計算出伺服器發來的證書的hash值,將這個計算的hash值與證書中籤名做對比;
(6)對比結果一致,則證明伺服器發來的證書合法,沒有被冒充;
(7)此時瀏覽器就可以讀取證書中的公鑰,用於後續加密了;

所以通過傳送SSL證書的形式,既解決了公鑰獲取問題,又解決了黑客冒充問題,一箭雙鵰,HTTPS加密過程也就此形成。
所以相比HTTP,HTTPS 傳輸更加安全:
(1) 所有資訊都是加密傳播,黑客無法竊聽。
(2) 具有校驗機制,一旦被篡改,通訊雙方會立刻發現。
(3) 配備身份證書,防止身份被冒充。

檢測方法

通過 curl https://domain.com可以加上-v 檢視具體流程資訊

curl: (60) Peer's Certificate issuer is not recognized.

More details here:
http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.

通過curl的檢測和上面的SSL的解析流程,我們能知道伺服器中是缺少三方結構ssl證書的頒發者CA的根證書

解決方法

下述方法來自於部落格https://blog.csdn.net/weixin_40006394/article/details/84790775?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

在三方的郵件中沒有CA的根證書,需要我們去下載並新增到伺服器的信任證書列表中
通過瀏覽器訪問域名 找到根證書位置


複製到檔案後 用文字編輯器開啟,複製其內容並追加到
/etc/pki/tls/certs/ca-bundle.crt檔案中 再通過curl訪問即可正常訪問