上個系列探討網路安全時,曾經簡單聊過數位憑證(Certificate),其原理就是透過非對稱式加密,請第三方的公正機構 CA(Certificate Authority,數位憑證認證機構)來幫你的網站「簽名掛保證」,如此一來就比較不用擔心被中間人攻擊,在用戶登入時偷走帳號密碼。
如果已經理解了非對稱式加密和數位憑證的基礎,今天就讓我們進一步來看看數位憑證的發放以及驗證,過程中的一些小細節。
當架設一個網站時,單純用 HTTP 協議來提供資料是相當不安全的,因為任何有幫你轉送封包的網路節點都能以明碼的形式看到你們傳輸的資料,因此現在大多使用包含加密的 HTTPS 協議。
如果要使用 HTTPS,就需要和 CA 申請數位憑證,獲取後就能將憑證放在網站讓瀏覽的用戶查閱,並依此來做驗證。
*數位憑證發放、驗證流程
我們大致可以將這個流程分成三個階段
網站用自己的公鑰及身份等資訊創建 CSR(Certificate Signing Request,憑證簽署請求),並得到一份憑證,憑證中包含 CA 的用私鑰加密後的一些重要訊息
網站將得到的憑證放在伺服器中,用戶瀏覽網站時除了網站的資料之外,會連帶取得此憑證。憑證如果在下一個步驟驗證通過後,裡面就包含著網站的公鑰,之後交換訊息就能以這把公鑰加密
用戶為了確保獲取的網站內容並沒有被竄改,或是將來要傳輸自己資訊時沒有人能偷走,就會拿著憑證中被 CA 私鑰簽署過的內容,找到在瀏覽器預存列表中對應 CA 的公鑰。由於公鑰只能被同一組的私鑰解開,因此只要能解開,就能確認此憑證是由被信任的 CA 所簽署的
有了這樣的機制,如果在網站和用戶中間有人想要竄改憑證和被加密的內容,就會因為沒有 CA 的私鑰,沒辦法把想要偷渡的內容加密,並且能被 CA 的公鑰解開。
然而,如果瀏覽器中就預存了被信任的 CA 資訊及其公鑰,那麼有新的 CA 加入時該怎麼更新?又如果這一組公鑰私鑰被竊取了該怎麼辦?
我們下一講繼續聊。