保持交易與客戶資料隱密性
憑證串鍊(Certificate chain)是什麼?為何如此重要!
我們在查詢網站安裝的SSL憑證時,除了您購買的憑證外,還會看到所謂中繼憑證與根憑證一併安裝在你的機器上,而且還是有前後連結(串鍊)的關聯性,那這樣的關聯性到底是為何而來?一定要都安裝上嗎?甚麼是串鍊中斷?我們來討論釐清一下!
要討論憑證串鍊之前(certificate chain),我們先來了解整個公開金鑰基礎建設(Public Key Infarstructure:PKI))當初的信任架構規劃,PKI的信任架構目前最常看到的兩種,如下
1.階層式的 : 階層式的架構是以一層一層的類似樹狀結構的方式,由最上層的CA,網下信任下層的CA,然後一層層往下信任,有上下游的連結信任關係,要產生信任關係,必須有上下游互相信任的憑證,如下圖
2.網狀式的 : 網狀式的架構則是在網狀的結點中都是獨立的CA,每個CA互相之間可有信任關係,也可以沒有,要產生信任關係,就必須互相接受彼此的憑證(互相簽章),如下圖
藉由以上的信任架構來看, 憑證的簽發方式, 就可以依照架構分成
簽發對象是自己的話:
自簽憑證(Self-Signed Certificate),如以階層式的架構來看,最上面的頭頭,就是簽發自簽憑證給自己,因為他上面沒有其他CA可簽給他,舉個實際的例子:就像SSL憑證的簽發一樣,有一個根憑證,中繼憑證與伺服器憑證
簽發對象是另一個CA:
互簽憑證(Cross-Certificate),如網狀式架構來看,CA1可以簽發給CA2,CA2也可簽發給CA1,只要互相認證過即可,舉個實際的例子:就像兩個銀行之簽要轉帳,銀行與銀行之間的憑證商所發的憑證,就必須互相簽認過才能進行轉帳功能!
簽發對象是終端End-Entity:(EE Certificate)
如個人,設備,組織: 不論是階層式或者網狀式的架構,最後面都可能會有一個尾端,這尾端例如簽發給設備,程式,或個人
要達成不論自簽或者互簽,他們的交互認證的方式也有區分,也有分成單向式與雙信式的,簡單的說,
單向式 CA1--> CA2 : CA1只認證CA2 , CA2不認證CA1
雙向式 CA1 <--> CA2 : CA1與CA2互相認證
了解CA的信賴關係與認證方式後,接下來就來討論憑證路徑
憑證路徑: 憑證路徑(Certification Path)也稱做憑證串鍊(Certificate Chain),由多張的憑證組成的順序性串列,前一張憑證與後一張憑證之間是有關聯性的,如下圖
也就是說 前後憑證可以用publickey來驗證簽章
了解憑證路徑後,結合信賴關係,就可以看到如下圖的說明,
根憑證 與 CA CA EE 一層層往下信任
確認憑證信賴與憑證路徑的關係後, 我們正式進入說明重點,
串鍊路徑是信賴的基礎, 只要其中一點出問題(路串鍊斷掉),那整個信任機制就出問題,因此憑證串鍊路徑的檢查就很重要! 因此!我們必須先知道這串鍊的頭是誰, 尾巴是誰, 中間有誰(找到串鍊路徑), 然後依照RFC3280的規定,去檢驗整條憑證路徑的合法性,才能確定串鍊是否OK! 聽起來好像很難! 其實也不會太難!
舉例: 當我們購買到憑證的時候, 很多web server會在安裝的時候會要您提供的檔案中,必須要有完整的憑證串鍊檔案,而您的CA商一定會在官網上提供他們的根憑證(CA廠商提供的根憑證通常會內植於瀏覽器信任的根憑證清單中,您可以從瀏覽器中取得!))與中繼憑證檔案,您只要把這三個檔案,利用工具包裝成web server要求的檔案格式(如IIS要求pfx格式,Tomcat要求JKS格式) 然後設定到web server設定檔案中, 重啟web server之後,打開瀏覽器看一下您的https網頁是否正常,這就可以知道憑證串鍊是否OK了! 當然您也可以使用我們的ssl checker來確認,我們的工具會完整列出憑證串鍊上的憑置資訊,如果有錯也會提醒您!
好那我們要如何來看憑證串鍊呢? 我舉個例子您就可以看清楚,
首先請打開瀏覽器, 找到一個有https的網址, 如https://www.google.com ,點擊鎖頭, 找到憑證資訊,如下圖
這時候我們會看到一個階層式架構,一層一層, 第一層就是根憑證(root CA),第二層就是中繼憑證(),第三層是您server的憑證,您在此串鍊上應該要注意幾個事情
1.串鍊上每個憑證都應該點擊憑證的詳細資料, 看一下簽章演算法, 雜湊函數 , 簽發者 , 有效期間, 公開金鑰演算法與長度 , 主體, 等等資訊是否符合要求
2.確認憑證的主題名稱應該就是下一層憑證的簽發者名稱!
3.每一層的簽發者是哪家公司, 因為! 目前憑證的販售有CA自己賣以及代理商幫忙賣, 您也可以從串鍊中知道, 賣你憑證的公司是代理商或者是CA廠商本身!最容易的方式就是去看根憑證與中繼憑證廠商是否同一家! 如果是同一家,代表本身是CA廠商,如果不是很可能是代理商! 同公司CA如下圖可看到,根憑證與中繼憑證到server憑證都是verisign發的!
舉台灣銀行為例,可看到是不同家公司發的!根憑證是AddTrust External CA Root,中繼是 AddTrust External CA Root, server憑證是TWCA Secure Certification Authority, 路徑中發證公司不同! 如下圖
前面提到串鍊斷掉(不是真正的斷掉),這會是如何的情形,通常最常發生是在您取得根憑證(另外是! CA廠商提供的根憑證通常會內植於瀏覽器信任的根憑證清單中,您可以從瀏覽器中取得!)與中繼憑證時,取得錯誤,然後打包成串鍊檔案(如pfx檔案)時發生錯誤,這時候就會發生串鍊路徑不正確的事情! 大部分都必須重新包裝,或者把憑證放到該放的位置(根憑證放在跟憑證位置,中繼放在中繼,server憑證放在正確的位置)就可以解決此問題! 如apache的設定會要設定憑證的存放地點
第一個問題: 根憑證的憑證是誰簽給他的, 任何的根憑證都是自簽憑證, 您可以透過一個地方發現,就是憑證簽發者(ISSUER)的名稱與憑證主體(Subject Name)名稱相同!,但是自簽憑證因為是自簽,沒有其他憑證來背書他!所以有可能會被偽造! 因此根憑證的自簽憑證的保護非常重要,CA廠商都必須有很好的資安要求讓根憑證中心免於受駭!由於根憑證可以偽冒,在網路上取得根憑證時需要很小心!
第二個問題: 中繼憑證如果也是CA廠商發出,安全性的要求就會與CA相同,那如果是代理商呢? 通常代理商要代理產品時,必須取得CA廠商的認可,同時CA廠商也會對代理商進行第三方的查核,來保證代理商資格的合法性!但是還是偶會發生一些代理商勿發憑證的事情,這樣的規範能對代理商要求到怎樣的程度,這就值得討論了!
第三個問題: 前面提到網狀是的信任架構,那如果是跨國的CA要如何信任,也就是說,台灣的CA與美國的CA如果憑證要互信(Cross Certificate),要如何進行!目前是沒看到這樣的案例出來,也就是說跨國的交互認證,好像沒看到業務面的東西!
後記:
憑證串鍊是一個PKI信任架構下的一種概念,上下游的廠商有互相信任的技術,您在購買SSL憑證的時候, 可以藉由憑證串鍊去知道串鍊上的發證商與憑證相關資訊,置於串鍊是否正常,可藉由一些工具進行了解與修正! 各種web server大都會要求提供憑證串鍊的憑證檔案進行安裝,您可以從您購買的廠商中拿到根憑證與中繼憑證,加上自己的憑證包裝起來進行安裝! 憑證商與代理商也可從串鍊略知一二! 這樣對於憑證串鍊就有一定的了解了!
PS:以上圖片階由網路取得,若有侵權請通知我們!