一、背景
超文本傳輸協議HTTP協議被用于在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此,HTTP協議不適合傳輸一些敏感信息,比如:信用卡號、密碼等支付信息。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS,為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。
二、http和https的區別
HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
三、HTTPS的工作原理
1、客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。連接建立成功之后瀏覽器把自己支持的加密規則發送給網站;
2、網站從這套加密規則里選出來一套加密算法和hash算法,然后把自己的身份信息用證書的方式發回給瀏覽器,證書里有網站地址、加密公鑰、證書頒發機構;
3、瀏覽器驗證證書的合法性,然后瀏覽器地址欄上會出現一把小鎖;瀏覽器接著生成一串隨機數密碼,然后用證書里的公鑰進行加密,這塊走得非對稱加密;用約定好的hash算法生成握手消息的hash值,然后用密碼對消息進行加密,然后把所有東西都發給網站,這塊走的是對稱加密
4、網站,從消息里面可以取出來公鑰加密后的隨機密碼,用本地的私鑰對消息解密取出來密碼,然后用密碼解密瀏覽器發來的握手消息,計算消息的hash值,并驗證與瀏覽器發送過來的hash值是否一致,最后用密碼加密一段握手消息,發給瀏覽器
5、瀏覽器解密握手消息,然后計算消息的hash值,如果跟網站發來的hash一樣,握手就結束,之后所有的數據都會由之前瀏覽器生成的隨機密碼,然后用對稱加密來進行進行加密。
四、HTTPS的優點
盡管HTTPS并非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:
1、使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。
3、HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
4、谷歌曾在2014年8月份調整搜索引擎算法,并稱“比起同等HTTP網站,采用HTTPS加密的網站在搜索結果中的排名將會更高”。
五、HTTPS的缺點
雖然說HTTPS有很大的優勢,但其相對來說,還是存在不足之處的:
1、HTTPS協議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;
2、HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗,甚至已有的安全措施也會因此而受到影響;
3、SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
4、SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。
5、HTTPS協議的加密范圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什么作用。最關鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。