轉載自:https://www.cnblogs.com/linianhui/p/security-https-workflow.htmlhtml
在前面兩篇博客中介紹了密碼相關的一些基本工具,包括(對稱密碼,公鑰密碼,密碼散列函數,混合密碼系統,消息認證碼碼,數字簽名,僞隨機數,數字證書)這幾個。其中它們之間也是互相依賴的,咱們來簡單的梳理一下它們的依賴關係。git
這篇要介紹的HTTPS,則把以上這些全都派上場了。github
在早期HTTP誕生的這幾年間,1990年~·1994年,HTTP做爲一個應用層協議,它是這樣工做的:windows
後來網景公司開發了SSL(Secure Sockets Layer)技術,而後它就變成了這樣的HTTP,也就是HTTPS了:函數
後來爆發了與IE的世紀大戰,網景敗北,SSL移交給了IETF(Internat Engineering Task Force)互聯網工程任務組,標準化以後變成了如今的TLS,如今通常會把它們兩個放在一塊兒稱爲SSL/TLS。本篇並不關注SSL/TLS具體是如何工做的,只是抽象的解釋下HTTPS的一個工做流程。工具
簡單總結下,HTTPS是使用了證書的一個混合密碼系統,其中證書的做用在於傳遞會話密鑰,以及驗證網站的真實性;而HTTPS真正的加密操做是由對稱密碼這個工具負責的(有興趣的能夠找找每一個步驟中都用到了密碼工具箱中的那些工具)。在windows系統中,能夠配置一個名爲 SSLKEYLOGFILE 的環境變量,Chrome和Firefox在訪問HTTPS站點的時候,會把第4步生成的會話密鑰以及其餘附屬信息,寫入到這個文件中:網站
好比下圖:ui
具體的格式能夠參考MDN的一個說明https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format。加密
以上只是一個抽象的HTTPS的一個工做流程,實際上SSL/TLS所作的工做遠不止這這些,更詳細的解釋請參考這篇文章:http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser。操作系統
SSL/TLS:https://en.wikipedia.org/wiki/Transport_Layer_Security
IETF:https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force
HTTPS:https://en.wikipedia.org/wiki/HTTPS
HTTPS 鏈接最初的若干毫秒:http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser
HTTPS on Stack Overflow: The End of a Long Road:https://nickcraver.com/blog/2017/05/22/https-on-stack-overflow/
SSL/TLS部署最佳實踐:https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
HTTP Over TLS:https://tools.ietf.org/html/rfc2818
SSLKEYLOGFILE:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format