HTTPS安全超文本傳輸協議

1、什麼是HTTPS

簡單的理解HTTPS就是使用SSL/TLS加密內容的、安全的HTTP協議css

HTTPS = HTTP + SSL/TLS html

 

2、對稱加密與非對稱加密

對稱加密:加密和解密使用同一密鑰。簡單、快速、效率高jquery

非對稱加密:加密解密密鑰不一樣,加密使用公鑰、解密使用私鑰,私鑰只有一人保管,公鑰能夠有多人知道。安全性更強、但性能消耗比對稱加密大ajax

SSL/TLS中同時使用了兩種加密方式,創建鏈接時使用非對稱加密傳輸產生密鑰的隨機數,連接創建後使用對稱加密傳輸通訊內容api

 

3、SSL/TLS握手過程

 

SSL/TLS的握手過程能夠用上圖描述瀏覽器

一、客戶端向服務端發送Client Hello,產生隨機數random1,並說明客戶端支持的加密方式和協議版本安全

二、服務端收到客戶端請求後,返回Server Hello,同時攜帶隨機數random2與數字證書,其中公鑰在數字證書中一同發送,避免篡改。服務器

三、客戶端收到服務端Server Hello後,驗證數字證書有效,使用生成隨機數random3,並使用公鑰加密,發送給服務端session

四、服務端使用私鑰解密獲得random3dom

五、客戶端和服務端根據約定好的加密方式,以及三個隨機數生成對話密鑰(session key),使用對話密鑰加密內容開始雙方會話

 

4、私鑰的做用

當使用CDN服務器的時候出於安全考慮不能把密鑰交給CDN服務器。

回顧整個握手連接過程,密鑰只在解密第三個隨機數時使用一次,所以,只須要把這個過程留在本身服務器就能夠。CDN服務器把客戶端加密的隨機數發送給業務服務器,業務服務器將數據解密後傳回給CDN服務,其餘流程均交給CDN服務

具體流程以下圖

 

5、HTTPS與HTTP不一樣點

對比內容 HTTPS HTTP
是否付費 證書大多數需付費 無需
傳輸信息方式 SSL/TLS協議加密信息,更安全 明文傳輸信息
端口 443 80

 

6、不使用HTTPS有那些風險

一、竊聽風險,第三方可能獲取通訊內容

二、篡改風險,通訊內容可能被第三方篡改

三、冒充風險,第三方可能被冒充他人蔘與通訊

 

7、如何將HTTP站點轉成HTTPS站點

 HTTPS 升級指南:http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html

 

8、升級HTTPS後須要注意的問題

注意在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/

相關文章
相關標籤/搜索