初識Nginx09:從網(wǎng)絡(luò)安全原理來看SSL安全協(xié)議

一,TLS/SSL發(fā)展和相關(guān)概念

  • SSL:(Secure Socket Layer,安全套接字層),位于可靠的面向連接的網(wǎng)絡(luò)層協(xié)議和應(yīng)用層協(xié)議之間的一種協(xié)議層。SSL通過互相認(rèn)證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實現(xiàn)客戶端和服務(wù)器之間的安全通訊。該協(xié)議由兩層組成:SSL記錄協(xié)議和SSL握手協(xié)議。
  • TLS:(Transport Layer Security,傳輸層安全協(xié)議),用于兩個應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成:TLS記錄協(xié)議和TLS握手協(xié)議。
    SSL和TLS都屬于加密協(xié)議。在其網(wǎng)絡(luò)數(shù)據(jù)傳輸中起到保護(hù)隱私和數(shù)據(jù)的完整性。保證該網(wǎng)絡(luò)傳輸?shù)男畔⒉粫晃唇?jīng)授權(quán)的元素攔截或修改,從而確保只有合法的發(fā)送者和接收者才能完全訪問并傳輸信息。
    根據(jù)分層架構(gòu)模型(OSI),主要用于應(yīng)用層和傳輸層的SSL協(xié)議,應(yīng)用最廣的是HTTP協(xié)議,從而產(chǎn)生了HTTPS協(xié)議。保障在網(wǎng)站和用戶之間(雙向)傳輸?shù)男畔⑹前踩?,在涉及敏感信息時尤為重要:機密數(shù)據(jù),密碼,銀行信息,個人圖像等。

二,SSL/TLS通用模型

2.1,對稱加密和非對稱加密

這兩種加密方式是TLS/SSL的用到的兩種加密方式。

2.2,SSL證書的公信力是如何保證的

通過CA機構(gòu)頒發(fā)證書。

2.3,PKI公鑰基礎(chǔ)設(shè)施

PKI公鑰基礎(chǔ)設(shè)施.png

2.4,CA證書

  • 域名驗證(domain validated,DV)證書
    這個證書只會去驗證域名的歸屬是否正確,比如我們申請證書的時候,只要你的域名指向的是你正在申請證書的那臺服務(wù)器,你就可以成功地申請到證書,如果你使用其他CA機構(gòu)頒發(fā)的證書,可能會去驗證你注冊的那個郵箱是否正確
  • 組織驗證(organization validated,OV)證書
    我們在申請證書的時候,會去驗證我們填寫的機構(gòu),企業(yè)名稱是否是正確的,所以O(shè)V證書的申請往往需要幾天的時間,不像DVz證書基本上實時就可以獲取到了,而OV證書的價格也往往高于DV證書,DV證書很多都是免費的
  • 擴(kuò)展驗證(extended validation,EV)證書
    比OV證書驗證更加嚴(yán)格,所以大部分的瀏覽器符EV證書的顯示非常的友好,它會把我們申請證書時,所填寫的機構(gòu)名稱在瀏覽器的地址的最左側(cè)顯示出來

2.5,SSL證書功能

1,幫助客戶端對服務(wù)端進(jìn)行驗證。
2,保證服務(wù)器和客戶端之間的通信安全。
3,加密用戶的敏感信息確保安全。
4,提升用戶對網(wǎng)站的信息。

2.6 協(xié)議模型

  • 第一步(雙方協(xié)商交換參數(shù))
  1. 客戶端產(chǎn)生隨機數(shù)RNC(Random Number of Client)。
  2. 客戶端發(fā)送客戶端的證書,協(xié)議(SSL/TLS),算法信息,RNC給服務(wù)器。
  3. 服務(wù)端回復(fù)服務(wù)器的證書,協(xié)議(SSL/TLS),算法信息,RNS(Random Number of Server)給客戶。
  • 第二步(客戶端/服務(wù)端向認(rèn)證機構(gòu)校驗證書信息)
  1. 客戶端向第三方/本地信任庫認(rèn)證接收到的服務(wù)器證書信息。
  2. 服務(wù)端向第三方/本地信任庫認(rèn)證接收到的服務(wù)器證書信息。
  • 第三步(生成主秘鑰Primary Master Secret)
  1. 客戶端生成隨機數(shù)PMS。
  2. 客戶端根據(jù)協(xié)議(SSL/TLS),服務(wù)器的證書公鑰生成加密過的PMS。
  3. 客戶端將加密過的PMS發(fā)送給服務(wù)端。
  4. 服務(wù)端接收到客戶端發(fā)送過來的加密過的PMS,并根據(jù)自己的私鑰解密出PMS。
  5. 客戶端與服務(wù)端保存公共私鑰(RNC_RNS_PMS)作為共同的私鑰。
  • 第四步 (會話秘鑰確認(rèn))
  1. 客戶端通過PMS產(chǎn)生會話密鑰
  2. 客戶端數(shù)據(jù)使用會話秘鑰加密發(fā)送給服務(wù)器。
  3. 服務(wù)器使用PMS產(chǎn)生對應(yīng)的密鑰。
  4. 服務(wù)使用會話密鑰解密接收到的數(shù)據(jù)。
  5. 服務(wù)器發(fā)送確認(rèn)信息給客戶端。
  6. 終止握手。
  • 第五步(正式會話):
  1. 客戶端數(shù)據(jù)使用會話密鑰加密 發(fā)送給服務(wù)端.
  2. 服務(wù)端接收數(shù)據(jù)使用相同的會話密鑰解密出數(shù)據(jù).
  3. 服務(wù)器使用會話密鑰加密數(shù)據(jù)發(fā)送給客戶端
  4. 客戶端使用會話密鑰解密出對應(yīng)數(shù)據(jù).
    這個部分一個詳細(xì)的介紹HTTPS 的概念、原理及工作機制

三,SSL握手過程

證書主要是用于握手過程中。
1,客戶端提交https請求。
2,服務(wù)器響應(yīng)客戶,并把證書和公鑰發(fā)給客戶端。
3,客戶端驗證證書和公鑰的有效性。
4,有效后,生成一個會話秘鑰。
5,客戶端用公鑰加密會話后,發(fā)給服務(wù)器。
6,服務(wù)器收到公鑰加密的報文后用私鑰解密?;厝捗罔€。
7,客戶端和服務(wù)端用這個會話秘鑰通信。

四,nginx配置SSL的方法和步驟

主要步驟:

  1. SSL模塊安裝。
    在配置ssl證書之前,要確保你的nginx已經(jīng)安裝了ssl模塊,一般情況下自己安裝的nginx都是不存在ssl模塊的。使用nginx -V查看
root@iZbp19tzbfkht2jgiwxh2eZ:/usr/nginx/sbin# ./nginx -V
nginx version: nginx/1.19.6
built by gcc 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 
configure arguments: --prefix=/usr/nginx

如果出現(xiàn) (configure arguments: --with-http_ssl_module), 則已安裝

一般情況下都是不存在ssl模塊的,接下來進(jìn)入到你的解壓縮后的nginx目錄,注意這里不是nginx安裝目錄,是解壓縮后的目錄,我的是在(/root/nginx),進(jìn)入目錄后,輸入

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

接下來執(zhí)行

make
#切記不要執(zhí)行make install,否則會重新安裝nginx

上述操作執(zhí)行完成以后,你的目錄下會出現(xiàn)objs文件夾,文件夾內(nèi)存在nginx文件:

root@iZbp19tzbfkht2jgiwxh2eZ:/home/nginx/nginx-1.19.6# ll
total 816
drwxr-xr-x 9 1001 1001   4096 Mar  7 15:37 ./
drwxr-xr-x 4 root root   4096 Jan 21 11:24 ../
drwxr-xr-x 6 1001 1001   4096 Jan 21 11:23 auto/
-rw-r--r-- 1 1001 1001 308054 Dec 15 22:41 CHANGES
-rw-r--r-- 1 1001 1001 470256 Dec 15 22:41 CHANGES.ru
drwxr-xr-x 2 1001 1001   4096 Jan 21 11:23 conf/
-rwxr-xr-x 1 1001 1001   2590 Dec 15 22:41 configure*
drwxr-xr-x 4 1001 1001   4096 Jan 21 11:23 contrib/
drwxr-xr-x 2 1001 1001   4096 Jan 21 11:23 html/
-rw-r--r-- 1 1001 1001   1397 Dec 15 22:41 LICENSE
-rw-r--r-- 1 root root    352 Mar  7 15:37 Makefile
drwxr-xr-x 2 1001 1001   4096 Jan 21 11:23 man/
drwxr-xr-x 3 root root   4096 Mar  7 15:38 objs/
-rw-r--r-- 1 1001 1001     49 Dec 15 22:41 README
drwxr-xr-x 9 1001 1001   4096 Jan 21 11:23 src/

接下來使用新的nginx文件替換掉之前安裝目錄sbin下的nginx,注意這里的替換的時候可以先將之前的文件備份下,停掉nginx服務(wù)

./nginx -s stop #停止nginx服務(wù)

#替換之前的nginx
cp /home/nginx/nginx-1.19.6objs/nginx /usr/nginx/sbin

成功之后,進(jìn)入到nginx安裝目錄下,查看ssl時候成功

#注意這里是大寫的V,小寫的只顯示版本號
./nginx -V  
#可以看到這里出現(xiàn)了configure arguments: --with-http_ssl_module   證明已經(jīng)安裝成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容