https是什麼
https全稱為hypertext transfer protocol over secure socket layer,及以安全為目標的http通道,簡單說就是http的安全版本。
https其實是由兩部分組成的:http+tls/ssl,即http下加入tls/ssl層,https的安全基礎就是tls/ssl。服務端和客戶端的資訊傳輸都會通過tls/ssl進行加密,所以傳輸的資料都是加密之後的資料。tls的前身就是ssl協議,因此沒有特別說明tls/ssl說的都是同乙個東西。
http在安全方面的缺陷
http本身是明文傳輸的
在http協議下,中間者可以隨意嗅探使用者搜尋內容,竊取隱私甚至篡改網頁。不過https是這些劫持行為的克星,能夠完全有效地防禦。總體來說,https協議提供了三個強大的功能來對抗上述的劫持行為:
3、資料完整。防止內容被第三方冒充或篡改
https工作原理
用一張圖表示一下https的工作原理,來自這位網友將基本的https工作原理已經總結得挺好了,我在此文的基礎上再做一些補充:
其工作過程大致是:
1、客戶端發起https請求
瀏覽器裡面輸入乙個https**,然後連線到服務端的443埠上。注意這個過程中客戶端會傳送乙個密文族給服務端,密文族是瀏覽器所支援的加密演算法的清單。
2、服務端配置
採用https協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面。
這套證書其實就是一對公鑰和私鑰,可以這麼理解,公鑰就是一把鎖頭,私鑰就是這把鎖的鑰匙,鎖頭可以給別人對某個東西進行加鎖,但是加鎖完畢之後,只有持有這把鎖的鑰匙才可以解鎖看到加鎖的內容。
採用的就是rsa公鑰加密演算法來區分證書簽名和交換金鑰,通過aes演算法來加密資料,至於gcm,應該是用來校驗資訊的
3、傳送證書
這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構、過期時間等等。
4、客戶端解析證書
這部分工作是由客戶端的tls來完成的,首先會驗證公鑰是否有效,如頒發機構、過期時間等等,如果發現異常則會彈出乙個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成乙個隨機值,然後用證書對該隨機值進行加密。
注意一下上面提到的"發現異常"。證書中會包含數字簽名,該數字簽名是加密過的,是用頒發機構的私鑰對本證書的公鑰、名稱及其他資訊做hash雜湊加密而生成的。客戶端瀏覽器會首先找到該證書的根證書頒發機構,如果有,則用該根證書的公鑰解密伺服器下發的證書,如果不能正常解密,則就是"發現異常",說明該證書是偽造的。
5、傳送加密資訊
這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,然後客戶端和服務端的通訊就可以通過這個隨機值來進行加密和解密了。
6、服務端解密資訊
服務端用私鑰解密後,得到了客戶端傳過來的隨機值,至此乙個非對稱加密的過程結束,看到tls利用非對稱加密實現了身份認證和金鑰協商。然後把內容通過該值進行對稱加密。
7、傳輸加密後的資訊
這部分是服務端用隨機值加密後的資訊,可以在客戶端被還原。
8、客戶端解密資訊
客戶端用之前生成的隨機值解密服務端傳送過來的資訊,於是獲取了解密後的內容,至此乙個對稱加密的過程結束,看到對稱加密是用於對伺服器待發送給客戶端的資料進行加密用的。整個過程即使第三方監聽了資料,也束手無策。
證書
下面對上述過程中的一些細節做解釋,首先是第二點中提到了證書,證書其實就是伺服器自己的一套身份資訊,客戶端拿到證書之後會首先
驗證證書的合法性,
從證書資訊中看到了加密演算法和具體的公鑰。
如何由http變為https
我們在瀏覽器中輸入會自動跳轉至看下是怎麼做到的,截三張圖就明白了:
並沒有發起重定向,我猜想可能是利用了負載均衡將請求http變為了https。
HTTPS工作原理
https其實是有兩部分組成 http ssl tls,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過tls進行加密,所以傳輸的資料都是加密後的資料。客戶端發起https請求 這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https 然後連線到server的443埠...
https工作原理
https協議一句話總結 要使客戶端與服務端的通訊過程得到安全保證,必須使用對稱加密演算法,但是協商對稱加密演算法的過程,需要使用非對稱加密演算法來保證安全,然而直接使用非對稱加密的過程本身也不安全,會有中間人篡改公鑰的可能性,所以客戶端與服務端不直接使用公鑰,而是使用數字證書頒發機構頒發的證書來保...
Https工作原理
一.簡介 https secure hypertext transfer protocol 安全超文字傳輸協議 它是乙個安全通訊通道,它基於http開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版,是使用 tls ssl 加密的 ht...