根據(jù)運(yùn)行的環(huán)境,操作系統(tǒng)可以分為桌面操作系統(tǒng),手機(jī)操作系統(tǒng),服務(wù)器操作系統(tǒng),嵌入式操作系統(tǒng)等。 本文的一部分: 什么是SSL,什么是TLS?官方說法是SSL是安全套接字層(secure sockets layer),TLS是SSL的后繼者,稱為傳輸層安全性(transport layer security). 說穿了,就是在明文的上層和TCP層之間增加一層加密,以保證上層信息傳輸?shù)陌踩? 例如,HTTP協(xié)議以純文本格式傳輸,并且在添加SSL層之后,有一個(gè)優(yōu)雅的名稱HTTPS. 其唯一目的是確保用于上層通信安全性的一組機(jī)制. 它的發(fā)展又經(jīng)歷了以下時(shí)期. 像手機(jī)軟件的升級(jí)一樣,每次更新都會(huì)添加或刪除功能,例如引入新的加密算法和修改握手方法. SSL1.0: 已廢除 SSL2.0: RFC6176已被取消 SSL3.0: RFC6101,基本上已取消 TLS1.0: RFC2246,其中大多數(shù)當(dāng)前使用此方法 TLS1.1: RF346 TLS1.2: RFC5246,未廣泛使用 TLS1.3: IETF正在醞釀中 接下來,我們將介紹TLS1.x如何確保通信安全. 如何確保安全?您是說安全性是安全的,如何實(shí)現(xiàn)?絕對(duì)安全嗎? 哈,有人民,有江湖,有江湖,沒有絕對(duì)的安全. 但是SSL / TLS確實(shí)可以在很大程度上保證信息安全. 以下是基于圖1中的SSL / TLS工作流的實(shí)現(xiàn)過程的概述. 圖1 SSL / TLS工作流程 CA: 證書頒發(fā)機(jī)構(gòu). 它類似于國家出入境管理部門,后者向他人發(fā)行護(hù)照. 它也類似于國家工商行政管理總局,后者向公司頒發(fā)營業(yè)執(zhí)照. 它具有兩個(gè)主要屬性: 1)CA本身是受信任的// //國際認(rèn)可的 2)向受信任的申請(qǐng)人頒發(fā)證書//與護(hù)照一樣,要確定您的合法身份,您不能是分子或叛亂分子. 當(dāng)然,您需要受到保護(hù),同時(shí)ssl認(rèn)證,CA可以隨時(shí)吊銷您的證書. 證書是什么樣的?實(shí)際上,您的計(jì)算機(jī)中有一堆CA證書. 你可以看看嗎: 360瀏覽器: 選項(xiàng)/設(shè)置->高級(jí)設(shè)置->隱私和安全性->管理HTTPS / SSL證書->證書頒發(fā)機(jī)構(gòu) Firefox瀏覽器: 首選項(xiàng)->高級(jí)->證書->查看證書->證書頒發(fā)機(jī)構(gòu) chrome瀏覽器: 設(shè)置->高級(jí)->管理證書->授權(quán)中心 ubuntu: / etc / ssl / certs 這些是CA證書! CA的證書ca.crt與SSL服務(wù)器的證書server.crt之間有什么關(guān)系? 1)SSL Server自己生成一個(gè)私鑰/公鑰對(duì). server.key / server.pub //私鑰加密,公鑰解密! 2)server.pub生成請(qǐng)求文件server.req. 請(qǐng)求文件包含一些服務(wù)器信息,例如域名/申請(qǐng)人/公共密鑰等. 3)服務(wù)器將請(qǐng)求文件server.req提交給CA. CA驗(yàn)證正確之后,它將使用ca.key和請(qǐng)求文件來生成server.crt 4)由于ca.key和ca.crt是一對(duì),因此ca.crt可以解密server.crt. 在實(shí)際應(yīng)用中: 如果SSL客戶端要驗(yàn)證SSL服務(wù)器,則SSL服務(wù)器必須將其證書server.crt傳遞給客戶端. 然后,客戶端使用ca.crt來驗(yàn)證server.crt的合法性. 如果這是網(wǎng)絡(luò)釣魚網(wǎng)站,則CA將不會(huì)向他頒發(fā)有效的server.crt證書,因此客戶端將使用ca.crt進(jìn)行驗(yàn)證,并且它將失敗. 例如,如果瀏覽器是客戶端,則您想訪問合法的淘寶網(wǎng)站,但如果您不小心訪問了該瀏覽器,則瀏覽器將檢查此假淘寶網(wǎng)絡(luò)釣魚網(wǎng)站的非法性,并提醒用戶不要繼續(xù)訪問!這樣,可以確保客戶端的所有https訪問都是安全的. 什么是SSL / TLS單向認(rèn)證和雙向認(rèn)證? 單向身份驗(yàn)證意味著只有一個(gè)對(duì)象可以驗(yàn)證對(duì)等證書的有效性. 通常使用客戶端來驗(yàn)證服務(wù)器的合法性. 然后客戶端需要一個(gè)ca.crt,服務(wù)器需要server.crt,server.key 雙向認(rèn)證是指相互驗(yàn)證. 服務(wù)器需要驗(yàn)證每個(gè)客戶端,客戶端也需要驗(yàn)證服務(wù)器. 服務(wù)器需要server.key,server.crt,ca.crt 客戶端需要client.key,client.crt,ca.crt 圖2證書詳細(xì)工作流程 1)申請(qǐng)認(rèn)證: 服務(wù)器需要生成公鑰和私鑰對(duì)pub_svr和pri_svr,并同時(shí)根據(jù)pub_svr生成請(qǐng)求文件csr并將其提交給CA. csr包含公鑰,組織信息,個(gè)人信息(域名)和其他信息. (圖1中的server.req是csr請(qǐng)求文件) 2)審核信息: CA通過各種方式(例如,組織是否存在,企業(yè)是否合法以及它是否擁有域)來驗(yàn)證申請(qǐng)人提供的信息的真實(shí)性,例如和離線名稱. 3)頒發(fā)證書: 如果信息得到批準(zhǔn),則CA將向申請(qǐng)人頒發(fā)認(rèn)證文件證書. 證書包含以下信息: 申請(qǐng)人的公鑰,申請(qǐng)人的組織信息和個(gè)人信息,發(fā)行機(jī)構(gòu)CA的信息,有效時(shí)間,證書序列號(hào)等信息,還包含簽名. 簽名生成算法: 首先,使用哈希函數(shù)來計(jì)算公共明文信息的信息摘要,然后使用CA的私鑰對(duì)信息摘要進(jìn)行加密,并且密文是簽名. (server.crt在圖1中生成) 4)返回證書: 如果客戶端請(qǐng)求驗(yàn)證服務(wù)器,則服務(wù)器需要返回證書文件. (在圖1中,握手返回到server.crt) 5)客戶端驗(yàn)證證書: 客戶端讀取證書中的相關(guān)明文信息,使用相同的哈希函數(shù)計(jì)算消息摘要,然后使用CA的相應(yīng)公鑰對(duì)簽名的數(shù)據(jù)進(jìn)行解密,并對(duì)證書進(jìn)行比較消息摘要,如果相同ssl認(rèn)證,則可以確的有效性,即公鑰合法. 然后,客戶端將驗(yàn)證與證書有關(guān)的域名信息,是否取消了有效時(shí)間等. 客戶端將具有內(nèi)置的受信任CA證書信息(包括公共密鑰). 如果不信任CA,則找不到相應(yīng)CA的證書,并且該證書也將被確定為非法. (在圖1中,檢查是可選的,我們可以選擇不驗(yàn)證服務(wù)器證書的有效性) 6)秘密密鑰協(xié)商: 驗(yàn)證后,服務(wù)器和客戶端將進(jìn)行秘密密鑰協(xié)商. 接下來,服務(wù)器和客戶端將使用對(duì)稱密鑰加密. (對(duì)稱的加密時(shí)間性能非常出色)(圖1中的pre-master / change_cipher_spec / encrypted_handshake_message過程) 7)數(shù)據(jù)傳輸: 服務(wù)器和客戶端使用對(duì)稱密鑰來加密和解密數(shù)據(jù). 客戶端發(fā)起一個(gè)請(qǐng)求,以明文形式發(fā)送請(qǐng)求信息,包括版本信息,密碼套件候選列表,壓縮算法候選列表,隨機(jī)數(shù),擴(kuò)展字段和其他信息. 相關(guān)信息如下: 客戶端計(jì)算所有接收到的信息的哈希值,并使用協(xié)商后的密鑰對(duì)crypted_handshake_message進(jìn)行解密,驗(yàn)證服務(wù)器發(fā)送的數(shù)據(jù)和密鑰,并在驗(yàn)證后完成握手; 開始使用協(xié)商的密鑰和算法進(jìn)行加密通信. 我們構(gòu)建的SSL / TLS服務(wù)器為192.168.111.100,客戶端為192.168.111.101. 客戶端需要驗(yàn)證服務(wù)器的合法性. 我們只查看TLSv1.1數(shù)據(jù)包: 第一個(gè)程序包(第25個(gè))Client Hello程序包,即SSL / TLS單向身份驗(yàn)證過程的(1) 第二個(gè)軟件包(第27號(hào))服務(wù)器Hello軟件包,包括服務(wù)器證書等. 這是SSL / TLS單向身份驗(yàn)證過程的(2) 第三包(第28號(hào))服務(wù)器證書驗(yàn)證完成,并且客戶端密鑰交換+更改密碼規(guī)范+加密握手消息同時(shí)發(fā)送. 這就是SSL / TLS單向身份驗(yàn)證過程的(4) 第四包(第29號(hào))密鑰協(xié)商,更改密碼規(guī)范+加密的hanshake消息. 即SSL / TLS單向身份驗(yàn)證過程的(5) 第五個(gè)數(shù)據(jù)包(第30個(gè))握手完成. 開始上層數(shù)據(jù)傳輸. SSL / TLS單向身份驗(yàn)證過程(7) 它與單向身份驗(yàn)證幾乎相同,除了客戶端對(duì)服務(wù)器證書進(jìn)行身份驗(yàn)證之后,客戶端會(huì)將自己的證書client.crt傳遞給服務(wù)器. 服務(wù)器通過身份驗(yàn)證后,密鑰協(xié)商開始. 實(shí)際的wireshark分析: 與單向身份驗(yàn)證相同: 我們構(gòu)建的SSL / TLS服務(wù)器為192.168.111.100,客戶端為192.168.111.101. 客戶端需要驗(yàn)證服務(wù)器的合法性,服務(wù)器還需要驗(yàn)證客戶端的合法性! 我們只查看TLSv1.1數(shù)據(jù)包: 第一個(gè)程序包(第55號(hào))Client Hello程序包,即SSL / TLS單向身份驗(yàn)證過程的(1) 第二個(gè)軟件包(第57號(hào))服務(wù)器Hello軟件包,包括服務(wù)器證書等. 這是SSL / TLS單向身份驗(yàn)證過程的(2) 第三包(第60號(hào))服務(wù)器證書驗(yàn)證完成,并且同時(shí)發(fā)送客戶端證書client.crt,其中還包括客戶端密鑰交換+更改密碼規(guī)范+加密的握手消息. 也就是說,SSL / TLS單向身份驗(yàn)證過程(4) 第四包(第61號(hào))服務(wù)器驗(yàn)證客戶端證書的有效性. 通過密鑰協(xié)商后,更改密碼規(guī)范+加密的hanshake消息. 即SSL / TLS單向身份驗(yàn)證過程的(5) 重發(fā)數(shù)據(jù)包(第62號(hào))由于網(wǎng)絡(luò)原因,TCP重發(fā)了60號(hào)數(shù)據(jù)包. 第五個(gè)數(shù)據(jù)包(第64個(gè))握手完成. 開始上層數(shù)據(jù)傳輸. SSL / TLS單向身份驗(yàn)證過程(7) 擴(kuò)展名是什么,例如crt / key / req / csr / pem / der? 1).crt表示證書,.key表示私鑰,.req表示請(qǐng)求文件,.csr表示請(qǐng)求文件,.pem表示pem格式,.der表示der格式. 您可以根據(jù)需要命名文件擴(kuò)展名. 命名不同的擴(kuò)展名只是為了了解需求. 但是,文件中的信息已格式化. 與exe和PE格式一樣,證書有兩種格式. pem格式和der格式. 所有證書,私鑰等可以是pem或der格式,具體取決于應(yīng)用程序的需求. pem和der格式可以相互轉(zhuǎn)換:
der格式: 加密的二進(jìn)制文件. 2)證書包含申請(qǐng)人的公鑰,申請(qǐng)人的組織信息和個(gè)人信息,發(fā)證機(jī)關(guān)的CA信息,有效期,證書序列號(hào)和其他純文本信息,還包含簽名. 例如,查看百度證書的詳細(xì)信息. a)首先下載百度證書 要訪問Firefox瀏覽器,請(qǐng)單擊左上角的綠色小鎖,單擊向右箭頭,單擊更多信息,單擊以查看證書,單擊詳細(xì)信息,然后單擊導(dǎo)出. 您可以導(dǎo)出百度的證書baiducom.crt b)查看證書詳細(xì)信息的命令
在詳細(xì)信息中,存在一個(gè)字段: X509v3基本約束: CA: FALSE 此字段指示證書是CA證書還是常規(guī)的非CA證書. 有關(guān)詳細(xì)說明,請(qǐng)參閱RFC5280#section-4.2.1.9,并且RFC5280還詳細(xì)介紹了證書的工作方法. 3)私鑰加密,公鑰解密! SSL / TLS是一個(gè)工作原理,openssl和mbedtls是SSL / TLS的特定實(shí)現(xiàn),非常類似于TCP / IP協(xié)議和套接字之間的關(guān)系. 我們使用makefile.sh腳本在本地創(chuàng)建一個(gè)CA(ca.crt + ca.key),并使用該CA分別向服務(wù)器和客戶端頒發(fā)證書. makefile.sh
將以上代碼另存為makefile.sh 進(jìn)行以下修改,并執(zhí)行終端. -將CN域中的IP地址更改為主機(jī)/設(shè)備的IP地址 -[可選]將加密數(shù)字1024更改為所需的加密數(shù)字 您將看到: ca目錄: 保存ca的私鑰ca.key和證書ca.crt certder目錄: 將證書另存為二進(jìn)制文件,例如client.der server.der 客戶端目錄: client.crt client.key 服務(wù)器目錄: server.crt server.key
刪除腳本rmfile.sh:
將上述代碼另存為rmfile.sh并在終端中執(zhí)行,這將刪除生成的目錄和文件:
我們可以在本地使用CA證書來驗(yàn)證自己頒發(fā)的服務(wù)器證書server.crt和客戶端證書client.crt.
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!