http協議以明文的方式在網路中傳輸,安全性難以保證,https在http協議的基礎上加入ssl/tls層。tls是ssl協議的最新版本,ssl使用ssl數字證書在通訊兩端建立加密鏈路,對兩端通訊資料進行加密,從而保證通訊資料安全。
http和https協議比較如下:
ssl協議主要涉及非對稱加密和對稱加密技術。
非對稱加密,使用一對金鑰加解密資料,公鑰(public key)對外公開,私鑰自己保留(private key)。使用私鑰加密的資料只有對應的公鑰才能解密。ssl使用非對稱加密進行通訊初始化(ssl handshake),非對稱加密演算法包括rsa,、dsa、pkcs等。
對稱加密,加解密都用同乙個key。ssl在通訊初始化(handshake)後,用session key進行對稱加密通訊。對稱加密演算法包括aes-128, aes-192 and aes-256。
ssl協議通訊包括兩個階段:ssl handshake和資料傳輸。ssl handshake階段使用非對稱加密,資料傳輸階段使用對稱加密。
ssl handshake包含以下步驟:
1. 客戶端傳送"client hello"訊息,這條訊息中包含客戶端ssl版本以及其它服務端需要的資訊。
2. 服務端回覆"server hello"訊息,這條訊息包含服務端ssl版本,包含public key的ssl數字證書及其它資訊。
3. 客戶端傳送請求給ca(certificate authority,證書頒發機構)對服務端進行身份驗證。驗證失敗則拒絕建立ssl連線,否則繼續4.
4. 客戶端生成session key,用服務端的public key加密,並傳送給服務端。假如服務端也要求驗證客戶端,客戶端也需要傳送自己的證書(一般是server之間的通訊需要)。
5. 服務端用自己的private key解密出session key,並用session key加密傳送確認訊息。
資料傳輸階段如下,用ssl handshake階段生成的session key對資料進行對稱加密通訊。和非對稱加密相比,對稱加密簡單、加解密速度會更快。
每種伺服器證書安裝方法都不一樣,本文講解在tomcat上的安裝。在安裝前若證書格式和伺服器支援的證書格式不一樣,需要利用openssl轉換。
在tomcat安裝路徑下conf/server.xml增加如下ssl/tls配置,支援https:
重啟tomcat
輸入:curl -v
可看到1部分獲取到ssl證書資訊,2部分獲取網頁資料
輸入:curl -v
http協議收到302重定向狀態碼,並有location重定向新路徑
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...