https如何工作的
為什麼使用https
不是存在http了嗎,為什麼還要https呢,兩個字“安全”,HTTPS是一種通過計算機網路進行安全通訊的傳輸協議,經由HTTP進行通訊,利用SSL/TLS建立全通道,加密資料包。HTTPS使用的主要目的是提供對網站伺服器的身份認證,同時保護交換資料的隱私與完整性。
基礎知識
如果你還不知道http是什麼,麻煩出門百度吧。
加密技術
- 對稱加密(AES):採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密
- 非對稱加密(RSA): 公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密
非對稱加密的兩種使用方式
1.加密 公鑰加密,私鑰解密,公鑰暴露給外界,私鑰只有自己知道,所以安全
2.驗籤 私鑰加密,公鑰解密,用來驗證傳送方,以及驗證傳送方資料有沒有被篡改。舉個支付驗籤的例子,業務方傳送支付的入參,以及自己用私鑰把入參加密後的值,支付端用公鑰把業務方加密的資料進行解密,得到的資料和支付入參進行比較,如果一致,那就可以驗證這條資料就是這個業務方發的,且沒有被篡改。如果中間有人改了支付的入參,但他沒有私鑰,無法再將入參進行加密,也就篡改後用公鑰解密後的結果會和支付入參不一致。 - SSL : SSL是一個安全協議,它提供使用 TCP/IP 的通訊應用程式間的隱私與完整性,存在應用層和傳輸層之間,https就是其的一個應用。具體原理我們會講
圖解原理
這是個大致的流程,實際上更復雜,下面我們來梳理一下這個流程。
1.首先瀏客戶端使用https進行訪問
2.伺服器會把他的公鑰給到客戶端,以及簽字認證資訊,這個CA機構會用自己的私鑰對伺服器公鑰加密,至於CA是什麼待會我們會說
3.客戶端內建了CA的公鑰,然後會驗證服務端下發的簽字證書,解密後得到的伺服器公鑰和傳過來的伺服器公鑰做比對,這裡用到的是驗籤,保證伺服器下發的公鑰沒有被修改,隨後建立一個隨機祕鑰並且用伺服器的公鑰加密,這裡用到非對稱加密
4.伺服器用私鑰解密後得到客戶端生成的祕鑰,這樣就可以通過對稱加密進行通訊了,只有客戶端和伺服器知道這個祕鑰
總結:使用到了 對稱加密 + 非對稱加密 + CA (+ 隨機數 + SSL版本) ,括號裡是實際使用到,但我沒說到的
CA認證,即電子認證服務,是指為電子簽名相關各方提供真實性、可靠性驗證的活動。證書頒發機構(CA, Certificate Authority)即頒發數字證書的機構。是負責發放和管理數字證書的權威機構,並作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。
下圖是CA簽字認證過程:
疑問
會有人有這樣的疑問,訪問https的網站,但是F12看到的介面傳輸還是明文,不應該是密文嗎?
答:你看到的http傳輸在應用層,SSL加解密是在應用層和傳輸層之間,之間會轉成密文,返回到http時又已經解密了,所以你看到的入參和出參都是明文
相關文章
- HTTPS代理的工作原理HTTP
- HTTPS工作原理HTTP
- http,https的工作流程HTTP
- HTTPS工作流程HTTP
- 如何讓HTTPS在本地主機localhost上工作? - KonstantinHTTPlocalhost
- 深入淺出HTTPS工作原理HTTP
- 深入理解HTTPS工作原理HTTP
- Https工作原理&TLS握手機制HTTPTLS
- [How HTTPS works Part 1 — Building Blocks] HTTPS 的工作方式第 1 部分-基本構造塊HTTPUIBloC
- 全站HTTPS升級系列(一)升級前的科普工作HTTP
- 如何搭建https代理?HTTP
- 為什麼說HTTPS比HTTP安全? HTTPS是如何保證安全的?HTTP
- HTTP和HTTPS有什麼區別?如何實現網站的HTTPS?HTTP網站
- https 如何做到安全HTTP
- 如何實現HTTPS加密HTTP加密
- 如何部署HTTPS站點HTTP
- HTTPS 是如何進行安全傳輸的 ?HTTP
- 如何獲取網站的HTTPS證書?網站HTTP
- Cucumber是如何工作的?
- CDN是如何工作的?
- Javascript是如何工作的JavaScript
- instanceof 是如何工作的
- DNS是如何工作的?DNS
- Homestead 站點如何配置 httpsHTTP
- 如何把HTTP轉成HTTPS?HTTP
- Nginx如何配置HTTPS詳解NginxHTTP
- 如何免費的讓網站啟用HTTPS網站HTTP
- webpack的require是如何工作的?WebUI
- Kubernetes Autoscaling是如何工作的?
- webpack HMR是如何工作的?Web
- 代理IP是如何工作的?
- 代理API是如何工作的?API
- SOCKS代理是如何工作的?
- 反向代理是如何工作的?
- Spring boot應用如何支援httpsSpring BootHTTP
- GO 中如何設定 HTTPS 分享GoHTTP
- Nginx如何配置Http、Https、WS、WSS?NginxHTTP
- 如何自動申請免費的HTTPS證書?HTTP