HTTPS 的詳細流程
之前有專門研究了一下HTTPS的具體工作流程,不過因為不是天天需要回憶,很快就忘了 所以現在專門寫一篇部落格記錄下來,不過內容翻譯自ofollow,noindex" target="_blank">這裡
- 使用者點選HTTPS連結,使用者所在的瀏覽器發起請求
- 伺服器響應,傳送公鑰
- 瀏覽器接受公鑰,然後生成一個隨機的密碼,並且用公鑰加密
- 瀏覽器把加密後的key傳送給伺服器
- 伺服器用私鑰解密
- 此後所有的流量都用哪個密碼來加密解密
其中原文裡沒有提到,我想提一下的幾個點:
-
上面沒有提到的流程,其中有伺服器在傳送公鑰的時候一般會發送支援的加密演算法,瀏覽器收到後會檢查自己支援的加密演算法, 然後選擇一個,然後加密,並且告訴伺服器自己用的是啥演算法
-
瀏覽器會校驗伺服器發過來的公鑰是否是經過認證的,這個認證就是體現在瀏覽器的小綠鎖上,即傳說中的CA,由世界上 好幾個大公司聯合組成一個組織專門負責,然後瀏覽器廠商選擇性相信,比如wosign的證書Chrome就不信,但是letsencrypt的 證書大家都信。