雖然HTPP協議很優秀而且方便,可是不得不正視HTTP協議存在的一些問題:算法
這些問題不只在HTTP協議上出現,其餘未加密的協議中也會存在這類問題。安全
因爲這些問題的存在,HTTPS協議就應運而生,HTTPS,超文本傳輸安全協議,是和SSL(Secure Socket Layer,安全套接層)或者TLS(Transport Layer Security,安全傳輸層協議)組合使用的,一般HTTP直接和TCP通訊,當使用SSL時,則演變成先和SSL通訊,再由SSL和TCP通訊了。服務器
上面提到了HTPP協議的不足,下面說一下HTTPS是如何解決這三個問題的。網絡
在網絡上傳輸信息,自己就是能夠被他人截獲的,好比經過抓包工具,第三者就能夠在同局域網的一臺主機,或者路由器或者互聯網的任何地方均可能被截獲數據。HTPP使用明文傳輸,至關於你傳輸的數據徹底暴露在了網絡上。併發
HTTPS傳輸數據的時候會對通訊進行加密,使用SSL創建安全線路以後,就能夠在這條線路上進行HTTP通訊了。至關於單獨創建了一條安全信道。工具
HTTP協議中的請求和響應不會對通訊雙方進行確認,也就是說存在「服務器是否就是發送請求中URI真正的主機,返回的響應是不是真的返回到實際提出請求的客戶端」等相似問題。而且,因爲不存在通訊雙方的處理步驟,任何人均可以發起請求。可能會出現DOS攻擊等問題。加密
HTTPS中SSL就能夠確認確認通訊方,它提供了一種被稱爲證書的手段,證書由值得信賴的第三方機構頒發,用以證實服務器和客戶端是實際存在的,另外僞造證書從技術角度說是異常困難的一件事,因此只要能確認通訊方持有的證書就能夠判斷通訊方的真實意圖。md5
HTTP協議沒法確認客戶端發出的請求和服務端接收到的請求是相同的,一樣,也沒法確認服務端發送的響應和客戶端接收的響應是相同的。很容易出現中間人攻擊。路由
雖然HTTP協議可使用md5等信息摘要算法保證數據完整性,可是MD5自己均可能被篡改,也就沒法保證其安全性。SSL提供了摘要功能。能夠保證數據的完整性。it
從HTTPS的功能來看,能夠總結爲:HTTP+加密+認證+完整性保護=HTTPS。
首先先來談談兩種加密方法:
可是使用公開密鑰加密方式傳輸數據比較慢,因此HTTPS結合了二者的優勢,使用混合加密機制,首先在交換密鑰的時候使用公開密鑰加密方式,確認鏈接後,傳輸數據使用共享密鑰加密方式。
當使用HTTPS時,通訊會變慢,致使通訊變慢的緣由有兩個,一是網絡負載,當使用HTTPS進行通訊時,網絡負載比HTTP要高2-100倍。而是因爲HTTPS每次通訊都要加解密,對CPU的消耗也很大。因此通常只有在傳輸機密信息時使用HTTPS,好比用戶密碼,銀行信息等。
再有就是使用HTTPS須要支付購買證書的費用,一些機構考慮到這點也可能優先選擇HTTP協議。
參考:《圖解HTTP》