OpenSSL 檢測 SSL 的憑證串鍊 (Certificate chain)

2018-02-09 Software

昨天接獲報案在公司內網接某台 Server 的 HTTPS 發生 CA 憑證 un trust 的問題,但是去接的 Client Server 本身的 CA 憑證已經有更新過了,也匯入該憑證的 CA Root,但還是無法 trust 憑證。

 

用可以連接外網的 Browser 去看是正常的,但是 Client Server (無外部網路)去 cURL 一直無法信任。

 

用 OpenSSL 去測試一看發現該 Server 的 SSL 憑證 Certificate chain 發生斷鍊的情況

 

一般 Certificate chain 會呈現 server(自身憑證) -> media(中繼憑證) -> root CA(根憑證),這三者是串連在一起的,如果用 OpenSSL 查看就會像這樣:

 

這張憑證是由兩張證書所組成,0 級是該 site 的證書,s 代表該證書的 subject,i 代表頒發該證書的 CA 資訊

 

正常的 Certificate chain 兩張證書 0 級的頒發 CA 應該要和 1 級的 subject 相同才對的起來,實際上證書可能有多個 Level 要看你的網域等級

 

例如 www.google.com 就會由三張證書組成 Certificate chain

Certificate chain

0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority

 

當中繼憑證沒有 import 的時候就會出現斷鍊,但是這一般在 internet 使用者無感,因為現在 Browser 已經很聰明可以去找到對應的 Certificate chain,可是如果你是使用 cURL 或是在沒有 internet 環境的網路,就無法透過網路去找到 Certificate chain。

 

避免以防萬一,大家拿到 SSL 證書的時候還是乖乖把中繼憑證加入,並且用 OpenSSL 檢查 Certificate chain 才不會走冤枉路。

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: