HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer 超文本傳輸 安全協議)
HTTPS在傳統的HTTP和TCP之間加了一層用於加密解密的SSL/TLS層
(安全套接層Secure Sockets Layer/安全傳輸層Transport Layer Security)層。使用HTTPS必需要有一套本身的數字證書(包含公鑰和私鑰)。git
HTTPS解決的問題github
HTTPS加密過程:安全
證書公鑰
公鑰加密
隨機值生成密鑰 祕鑰
發送給服務器私鑰
解密祕鑰
獲得隨機值將信息和隨機值混合在一塊兒
進行對稱加密祕鑰
解密信息
加密過程使用了對稱加密和非對稱加密。服務器
對稱加密: 客戶端和服務端採用相同的密鑰經行加密ssh
encrypt(明文,祕鑰) = 密文 decrypt(密文,祕鑰) = 明文
非對稱加密:客戶端經過公鑰加密。服務端經過私鑰解密加密
encrypt(明文,公鑰) = 密文 decrypt(密文,私鑰) = 明文
由於TLS握手的過程當中採用了非對稱加密,客戶端自己不知道服務器的祕鑰,這樣通訊就不會被中間人劫持。此外這一步服務端還提供了證書,而且可能要求客戶端提供證書。關於證書下文會提到,只要有了證書,就能保證和你通訊的對方是真實的,而不是別人僞造的。spa
那而後驗證證書呢?code
站點證書的頒發者
驗證服務端站點
是否可信根證書頒發者
根證書頒發者
一步步驗證站點證書頒佈者
是否可信附:blog
參考:ip