HTTPS:
// HTTPS是最常見的HTTP安全版本
// 是在安全的傳輸層上發送的HTTP// 將HTTP報文發送給TCP之前,先將其發送給了一個安全層(通過SSL協議實現),對其進行加密.然后再發送給TCP
// 在服務器端,通過提取商量好的密鑰進行解密
HTTPS方案:
// 對Web服務器發起請求時,需要有一種方案來告知Web服務器執行(http,或https).
// 該方案在URL的方案中實現,具體如下:
// 通常情況下,非安全HTTP的URL方案前綴為http
// 如:http://www.joes-hardware.com/index.html
// 在安全HTTPS協議中,URL的方案前綴為https
// 如:https://cajun-shop.securesites.com/Merchant2/merchant.mv?Store_Code=AGCGS// 例:Web瀏覽器對某Web資源執行某事務時,會檢查URL的方案
// ·如果URL的方案為http,客戶端會打開一條到服務器端口80(默認情況下)的TCP連接,并向其發送老的HTTP命令
// ·如果URL的方案為https,客戶端就會打開一條到服務器端口443(默認情況下)的連接,然后與服務器"握手"
// 以二進制格式與服務器交換一些SSL安全參數,附上加密的HTTP命令
SSL:
// 是一個二進制協議,其流量是承載在另一個端口(默認是443)上的
建立安全傳輸:
// 在未加密HTTP中,客戶端會打開一條到Web服務器端口80的TCP連接,發送一條請求報文,接收一條響報文,關閉連接
// 在HTTPS中,客戶端首先打開一條到Web服務器端口443的連接
// 一旦建立了TCP連接(三次握手完成),客戶端和服務器就會初始化SSL層(SSL握手),對加密參數進行溝通,并交換密鑰
// SSL握手完成之后,SSL初始化就完成了,客戶端就可以將請求報文發送給安全層了
// 在將報文發送給TCP之前,要先對其進行加密
SSL握手:
// 在發送已加密的HTTP報文之前.客戶端和服務器要進行一次SSL握手,這個握手主要完成以下工作:
// ·交換協議版本號
// ·選擇一個兩端都了解的密碼
// ·對兩端的身份進行認證
// ·生成磷酸的會話密鑰,以便加密信道
總結:
// HTTP是在TCP連接之后直接,將客戶端的請求報文托付給TCP
// HTTPS:在TCP連接后,(在端口443)進行SSL握手,在托付HTTP給TCP之前,先對HTTP進行加密,HTTP通過TCP到達服務器
// 利用事先商量好的密鑰進行解密.
參考《HTTP權威指南》P339~P342