1、https簡介
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,RFC2818文檔中https也稱作TLS之上的HTTP。因此加密的詳細內容請看SSL。 https所用的端口號是443。見下圖:
從上面兩張圖中可知,https協議是基於SSL協議的。
2、https的實現原理
有兩種基本的加解密算法類型:
1)對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;
2)非對稱加密:密鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。
下面看一下https的通信過程:
https通信的優點:
1)客戶端產生的密鑰只有客戶端和服務器端能得到;
2)加密的數據只有客戶端和服務器端才能得到明文;
3)客戶端到服務端的通信是安全的。
3、服務器驗證客戶端
如果服務器要求客戶的身份認證,服務器必須檢驗客戶證書和簽名隨機數的合法性,具體的合法性驗證過程包括:
①客戶的證書使用日期是否有效
②爲客戶提供證書的CA 是否可靠
③發行CA 的公鑰能否正確解開客戶證書的發行CA 的數字簽名
④檢查客戶的證書是否在證書廢止列表(CRL)中
4、加密
在https的通信過程中,組合使用了公用密鑰方式加密和共享密鑰方式加密這兩種技術。
公用密鑰方式要比共享密鑰方式慢得多,因此使用公用密鑰來完成共享密鑰的交換。公用密鑰是從證書中獲得的。
拿到共享密鑰之後,所有的內容之間的通信都會使用共享密鑰來進行加密和解密。
公用密鑰的作用就是爲了安全的交換共享密鑰,共享密鑰是用來通信內容的加密和解密。這樣既確保了通信之間的安全,也確保了加密和解密的效率。
5、SSL的連接
連接分爲兩個階段,即握手和數據傳輸階段。
握手階段對服務器進行認證並確立用於保護數據傳輸的加密密鑰。必須在傳輸任何應用數據之前完成握手。一旦握手完成,數據就被分成一系列經過保護的記錄進行傳輸。