一、SSL\\TLS協議是什么?
SSL英文全稱為Secure Sockets Layer,譯為安全套接層。
TLS英文全稱為(Transport Layer Security,譯為傳輸層安全,是SSL的繼承者。
SSL\\TLS協議用來實現安全通信。
1990年,網景(Netscape)公司開發SSL v1版本;
1994年,開發SSL v2版本;
1995年,開發SSL v3版本;
1999年,開發TLS v1版本,SSL協議棄用;
2006年,開發TLS v2版本;
2018年,開發TLS v3版本。
雖然SSL已經被TLS取代,但習慣上仍稱為SSL,如HTTP over SSL,MQTT over SSL。
SSL\\TLS協議在TCP\\IP協議棧的位置是怎樣的呢?《圖解HTTP》中一圖很好地說明這個問題:
二、SSL\\TLS協議是如何工作的?
SSL\\TLS協議的工作流程同樣在《圖解HTTP》有精彩描述,網絡上也有通俗解釋,可見參考資料部分。這里不再描述,主要關注如下問題:
1.Web通信的證書是如何生成的?如何放置?
(1)使用openssl genrsa和openssl req命令生成
# 生成私鑰*.key
openssl genrsa -des3 -out private.key 2048
# 生成請求證書*.csr
openssl req -new -key private.key -out cert.csr
# 采用自認證方式,生成服務端證書
openssl x509 -req -days 3650 -in cert.csr -signkey private.key -out server.crt
說明:server.crt中包含網站域名、公司等信息
(2)證書如何放置?
private.key和server.crt放置在服務端Web應用相應的目錄中,服務端會通過Handshake:Certificate消息將server.crt證書相關信息發送給客戶端。
- 密鑰是如何生成的?又是如何加解密的?
從理論上來說,SSL\\TLS協議是先使用“非對稱加密”實現“對稱加密”的密鑰交換,再使用“對稱加密”進行安全通信。
(1)“對稱加密”的密鑰是如何生成的?
A. 客戶端產生隨機數C,并通過Client Hello發給服務端;
B. 服務端產生隨機數S,并通過Server Hello發給客戶端;
C. 客戶端生成預主密鑰(Pre-master secret),通過Client Key Exchange發給服務端;
D. 客戶端和服務端通過隨機數C、隨機數S和Pre-master secret,按照某種算法生成master secret(主密鑰),并推導出hash secret和session secret。
(2)進一步,如何對應用層(以HTTP為例)報文進行加解密呢?
A. 客戶端使用協商好的對稱加密算法加密HTTP報文,密鑰為hash secret,生成報文摘要C(Message Authentication Code),然后再使用密鑰session-secret加密HTTP報文和報文摘要C。
B. 服務端先使用session-secret解密,得到HTTP報文和報文摘要C,使用hash secret得到報文摘要
-
SSL
+關注
關注
0文章
126瀏覽量
25748 -
安全通信
+關注
關注
0文章
21瀏覽量
8528 -
TLS
+關注
關注
0文章
44瀏覽量
4257
發布評論請先 登錄
相關推薦
評論