簡單的理解HTTPS就是使用SSL/TLS加密內容的、安全的HTTP協議css
HTTPS = HTTP + SSL/TLS html
對稱加密:加密和解密使用同一密鑰。簡單、快速、效率高jquery
非對稱加密:加密解密密鑰不一樣,加密使用公鑰、解密使用私鑰,私鑰只有一人保管,公鑰能夠有多人知道。安全性更強、但性能消耗比對稱加密大ajax
SSL/TLS中同時使用了兩種加密方式,創建鏈接時使用非對稱加密傳輸產生密鑰的隨機數,連接創建後使用對稱加密傳輸通訊內容api
SSL/TLS的握手過程能夠用上圖描述瀏覽器
一、客戶端向服務端發送Client Hello,產生隨機數random1,並說明客戶端支持的加密方式和協議版本安全
二、服務端收到客戶端請求後,返回Server Hello,同時攜帶隨機數random2與數字證書,其中公鑰在數字證書中一同發送,避免篡改。服務器
三、客戶端收到服務端Server Hello後,驗證數字證書有效,使用生成隨機數random3,並使用公鑰加密,發送給服務端session
四、服務端使用私鑰解密獲得random3dom
五、客戶端和服務端根據約定好的加密方式,以及三個隨機數生成對話密鑰(session key),使用對話密鑰加密內容開始雙方會話
當使用CDN服務器的時候出於安全考慮不能把密鑰交給CDN服務器。
回顧整個握手連接過程,密鑰只在解密第三個隨機數時使用一次,所以,只須要把這個過程留在本身服務器就能夠。CDN服務器把客戶端加密的隨機數發送給業務服務器,業務服務器將數據解密後傳回給CDN服務,其餘流程均交給CDN服務
具體流程以下圖
對比內容 | HTTPS | HTTP |
是否付費 | 證書大多數需付費 | 無需 |
傳輸信息方式 | SSL/TLS協議加密信息,更安全 | 明文傳輸信息 |
端口 | 443 | 80 |
一、竊聽風險,第三方可能獲取通訊內容
二、篡改風險,通訊內容可能被第三方篡改
三、冒充風險,第三方可能被冒充他人蔘與通訊
HTTPS 升級指南:http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html
注意在HTTPS訪問的頁面,在請求資源時也須要使用HTTPS,若是使用HTTP在IE中會出現不安全項目彈框
可使用協議相對URL解決這個問題
<img src="https://www.aaa.org/logo.png" alt="" /> <img src="//www.aaa.org/logo.png" alt="" /><!--協議相對URL-->
協議相對URL,如上面代碼第二行,即省略URL協議聲明的方式,使用了這種方式瀏覽器會使用頁面訪問相同的協議請求頁面資源
協議相對URL可使用在HTML中的連接中,也可使用在css中。可是在IE6/7中link或@import資源會被下載兩次,除此之外沒有其餘問題
使用場景舉例
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script> <link rel="stylesheet" href="//www.ludou.org/style.css" /> <a href="//www.ludou.org/">Ludou</a>
.logo { background: url(//www.ludou.org/logo.png); }
圖解SSL/TLS協議:http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
與HTTP有什麼區別?HTTPS的七個誤解:https://www.admin5.com/article/20150523/600106.shtml
網站是否須要HTTPS加密:https://www.admin5.com/special/https/