什么是SSL/TLS

不使用SSL/TLS的網(wǎng)絡通信,一般都是明文傳輸,網(wǎng)絡傳輸內(nèi)容在傳輸過程中很容易被竊聽甚至篡改,非常不安全。SSL/TLS協(xié)議就是為了解決這些安全問題而設(shè)計的。SSL/TLS協(xié)議位于TCP/IP協(xié)議之上,各個應用層協(xié)議之下,使網(wǎng)絡傳輸?shù)膬?nèi)容通過加密算法加密,并且只有服務器和客戶端可以加密解密,中間人即使抓到數(shù)據(jù)包也無法解密獲取傳輸?shù)膬?nèi)容,從而避免安全問題。例如廣泛使用的HTTPS協(xié)議即是在TCP協(xié)議和HTTP協(xié)議之間加了一層SSL/TLS協(xié)議。

相關(guān)術(shù)語

在學習SSL/TLS協(xié)議之前,首先要了解一些相關(guān)概念: 
- 對稱加密:加密和解密都采用同一個密鑰,常用的算法有DES、3DES、AES,相對于非對稱加密算法更簡單速度更快。 
- 非對稱加密:和對稱加密算法不同,非對稱加密算法會有兩個密鑰:公鑰(可以公開的)和私鑰(私有的),例如客戶端如果使用公鑰加密,那么即時其他人有公鑰也無法解密,只能通過服務器私有的私鑰解密。RSA算法即是典型的非對稱加密算法。 
- 數(shù)字證書:數(shù)字證書是一個包含公鑰并且通過權(quán)威機構(gòu)發(fā)行的一串數(shù)據(jù),數(shù)字證書很多需要付費購買,也有免費的,另外也可以自己生成數(shù)字證書,本文中將會采用自簽名的方式生成數(shù)字證書。

SSL/TLS流程

使用SSL/TLS協(xié)議的服務器和客戶端開始通信之前,會先進行一個握手階段:

  1. 客戶端發(fā)出請求:這一步客戶端會生成一個隨機數(shù)傳給服務器;

  2. 服務器回應:這一步服務器會返回給客戶端一個服務器數(shù)字證書(證書中包含用于加密的公鑰),另外服務器也會生成一個隨機數(shù)給客戶端;

  3. 客戶端回應:這一步客戶端首先會校驗數(shù)字證書的合法性,然后會再生成一個隨機數(shù),這個隨機數(shù)會使用第2步中的公鑰采用非對稱加密算法(例如RSA算法)進行加密后傳給服務器,密文只能通過服務器的私鑰來解密。

  4. 服務器最后回應:握手結(jié)束。

握手結(jié)

網(wǎng)友評論