https交互過程
https的交互過程如下:
1、客戶端將它所支持的算法列表和一個用作產(chǎn)生密鑰的隨機數(shù)發(fā)送給服務(wù)器。
2、服務(wù)器從算法列表中選擇一種加密算法,并將它和一份包含服務(wù)器公用密鑰的證書發(fā)送給客戶端;該證書還包含了用于認(rèn)證目的的服務(wù)器標(biāo)識,服務(wù)器同時還提供了一個用作產(chǎn)生密鑰的隨機數(shù)。
3、客戶端對服務(wù)器的證書進(jìn)行驗證,并抽取服務(wù)器的公用密鑰;然后,再產(chǎn)生一個稱作pre_master_secret的隨機密碼串,并使用服務(wù)器的公用密鑰對其進(jìn)行加密(參考非對稱加/解密),并將加密后的信息發(fā)送給服務(wù)器;
4、客戶端與服務(wù)器端根據(jù)pre_master_secret以及客戶端與服務(wù)器的隨機數(shù)值獨立計算出加密和MAC密鑰;
5、客戶端將所有握手消息的MAC值發(fā)送給服務(wù)器;
6、服務(wù)器將所有握手消息的MAC值發(fā)送給客戶端。
在這里整理一下最近這兩天整理的https的相關(guān)知識。
大家都知道要使用https,需要在網(wǎng)站的服務(wù)器上配置https證書(一般是nginx,或者tomcat),證書可以使用自己生成,也可以向?qū)iT的https證書提供商進(jìn)行購買。這兩種的區(qū)別是自己生成的證書是不被瀏覽器信任的,所以當(dāng)訪問的時候回提示不安全的網(wǎng)站,需要點擊信任之后才能繼續(xù)訪問
自己生成的
而購買的https證書會提示安全
DV,OV
EV
這是因為瀏覽器中預(yù)置了一些https證書提供商的證書,在瀏覽器獲取到服務(wù)器的https證書進(jìn)行驗證的時候就知道這個https證書是可信的;而自己生成的證書,瀏覽器獲取到之后無法進(jìn)行驗證是否可信,所以就給出不安全的提示。
下面對具體的一些知識點進(jìn)行介紹
1. 什么是https
https簡單的說就是安全版的http,因為http協(xié)議的數(shù)據(jù)都是明文進(jìn)行傳輸?shù)模詫τ谝恍┟舾行畔⒌膫鬏斁秃懿话踩瑸榱税踩珎鬏斆舾袛?shù)據(jù),網(wǎng)景公司設(shè)計了SSL(Secure Socket Layer),在http的基礎(chǔ)上添加了一個安全傳輸層,對所有的數(shù)據(jù)都加密后再進(jìn)行傳輸,客戶端和服務(wù)器端收到加密數(shù)據(jù)后按照之前約定好的秘鑰解密。
2. 加密和解密
Https的發(fā)展和密碼學(xué)的發(fā)展是分不開的。大家應(yīng)該知道加密方式可以大體分為對稱加密和非對稱加密(反正我就知道這兩種)
對稱加密,就是加密和解密都是用同一個秘鑰,這種方式優(yōu)點就是速度快,缺點就是在管理和分配秘鑰的時候不安全。
非對稱加密算法,非對稱加密有一個秘鑰對,叫做公鑰和私鑰,私鑰自己持有,公鑰可以公開的發(fā)送給使用的人。使用公鑰進(jìn)行加密的信息,只有和其配對的私鑰可以解開。目前常見的非對稱加密算法是RSA,非對稱的加密算法的優(yōu)點是安全,因為他不需要把私鑰暴露出去。
在正式的使用場景中一般都是對稱加密和非對稱加密結(jié)合使用,使用非對稱加密完成秘鑰的傳遞,然后使用對稱秘鑰進(jìn)行數(shù)據(jù)加密和解密
3. https證書的申請流程
1 在服務(wù)器上生成CSR文件(證書申請文件,內(nèi)容包括證書公鑰、使用的Hash算法、申請的域名、公司名稱、職位等信息)
可以使用命令在服務(wù)器上生成;也可以使用線上的工具進(jìn)行生成,線上的工具會把公鑰加入到CSR文件中,并同時生成私鑰。
CSR文件內(nèi)容
2 把CSR文件和其他可能的證件上傳到CA認(rèn)證機構(gòu),CA機構(gòu)收到證書申請之后,使用申請中的Hash算法,對部分內(nèi)容進(jìn)行摘要,然后使用CA機構(gòu)自己的私鑰對這段摘要信息進(jìn)行簽名,
CA機構(gòu)進(jìn)行簽名
3 然后CA機構(gòu)把簽名過的證書通過郵件形式發(fā)送到申請者手中。
4 申請者收到證書之后部署到自己的web服務(wù)器中。下面會在寫一篇關(guān)于部署的文章
當(dāng)然這是不通過CA代理機構(gòu)進(jìn)行申請的流程,現(xiàn)在網(wǎng)上有好多CA的代理機構(gòu),像騰訊云,阿里云都可以申請https證書,流程都差不多。
阿里云申請證書流程
4. 客戶端(瀏覽器)和服務(wù)器端交互流程
客戶端服務(wù)端交互
client Hello,客戶端(通常是瀏覽器)先向服務(wù)器發(fā)出加密通信的請求
(1) 支持的協(xié)議版本,比如TLS 1.0版。
(2) 一個客戶端生成的隨機數(shù) random1,稍后用于生成"對話密鑰"。
(3) 支持的加密方法,比如RSA公鑰加密。
(4) 支持的壓縮方法。
服務(wù)器收到請求,然后響應(yīng) (server Hello)
(1) 確認(rèn)使用的加密通信協(xié)議版本,比如TLS 1.0版本。如果瀏覽器與服務(wù)器支持的版本不一致,服務(wù)器關(guān)閉加密通信。
(2) 一個服務(wù)器生成的隨機數(shù)random2,稍后用于生成"對話密鑰"。
(3) 確認(rèn)使用的加密方法,比如RSA公鑰加密。
(4) 服務(wù)器證書。
證書內(nèi)容
證書內(nèi)容
客戶端收到證書之后會首先會進(jìn)行驗證
驗證流程
我們知道CA機構(gòu)在簽發(fā)證書的時候,都會使用自己的私鑰對證書進(jìn)行簽名
證書里的簽名算法字段 sha256RSA 表示,CA機構(gòu)使用sha256對證書進(jìn)行摘要,然后使用RSA算法對摘要進(jìn)行私鑰簽名,而我們也知道RSA算法中,使用私鑰簽名之后,只有公鑰才能進(jìn)行驗簽。
如果我們使用的是購買的證書,那么很有可能,頒發(fā)這個證書的CA機構(gòu)的公鑰已經(jīng)預(yù)置在操作系統(tǒng)中。這樣瀏覽器就可以使用CA機構(gòu)的公鑰對服務(wù)器的證書進(jìn)行驗簽。確定這個證書是不是由正規(guī)的CA機構(gòu)頒發(fā)的。驗簽之后得到CA機構(gòu)使用sha256得到的證書摘要,然后客戶端再使用sha256對證書內(nèi)容進(jìn)行一次摘要,如果得到的值和驗簽之后得到的摘要值相同,則表示證書沒有被修改過。
如果驗證通過,就會顯示上面的安全字樣,如果服務(wù)器購買的證書是更高級的EV類型,就會顯示出購買證書的時候提供的企業(yè)名稱。如果沒有驗證通過,就會顯示不安全的提示。
生成隨機數(shù)
驗證通過之后,客戶端會生成一個隨機數(shù)pre-master secret,然后使用證書中的公鑰進(jìn)行加密,然后傳遞給服務(wù)器端
PreMaster secret
PreMaster Secret是在客戶端使用RSA或者Diffie-Hellman等加密算法生成的。它將用來跟服務(wù)端和客戶端在Hello階段產(chǎn)生的隨機數(shù)結(jié)合在一起生成 Master Secret。在客戶端使用服務(wù)端的公鑰對PreMaster Secret進(jìn)行加密之后傳送給服務(wù)端,服務(wù)端將使用私鑰進(jìn)行解密得到PreMaster secret。也就是說服務(wù)端和客戶端都有一份相同的PreMaster secret和隨機數(shù)。
PreMaster secret前兩個字節(jié)是TLS的版本號,這是一個比較重要的用來核對握手?jǐn)?shù)據(jù)的版本號,因為在Client Hello階段,客戶端會發(fā)送一份加密套件列表和當(dāng)前支持的SSL/TLS的版本號給服務(wù)端,而且是使用明文傳送的,如果握手的數(shù)據(jù)包被破解之后,攻擊者很有可能串改數(shù)據(jù)包,選擇一個安全性較低的加密套件和版本給服務(wù)端,從而對數(shù)據(jù)進(jìn)行破解。所以,服務(wù)端需要對密文中解密出來對的PreMaster版本號跟之前Client Hello階段的版本號進(jìn)行對比,如果版本號變低,則說明被串改,則立即停止發(fā)送任何消息。
pre-master secret
服務(wù)器收到使用公鑰加密的內(nèi)容,在服務(wù)器端使用私鑰解密之后獲得隨機數(shù)pre-master secret,然后根據(jù)radom1、radom2、pre-master secret通過一定的算法得出session Key和MAC算法秘鑰,作為后面交互過程中使用對稱秘鑰。同時客戶端也會使用radom1、radom2、pre-master secret,和同樣的算法生成session Key和MAC算法的秘鑰。
生成session Key的過程中會用到PRF(Pseudorandom Function偽隨機方法)來生成一個key_block,然后再使用key_block,生成后面使用的秘鑰。
key_block = PRF(SecurityParameters.master_secret,"key expansion",SecurityParameters.server_random +SecurityParameters.client_random);
PRF是在規(guī)范中約定的偽隨機函數(shù)
在信息交互過程中用到的秘鑰有6個分別是。客戶端和服務(wù)器端分別使用相同的算法生成。
秘鑰名稱秘鑰作用
client_write_MAC_key[SecurityParameters.mac_key_length]客戶端發(fā)送數(shù)據(jù)使用的摘要MAC算法
server_write_MAC_key[SecurityParameters.mac_key_length]服務(wù)端發(fā)送數(shù)據(jù)使用摘要MAC算法
client_write_key[SecurityParameters.enc_key_length]客戶端數(shù)據(jù)加密,服務(wù)端解密
server_write_key[SecurityParameters.enc_key_length]服務(wù)端加密,客戶端解密
client_write_IV[SecurityParameters.fixed_iv_length]初始化向量,運用于分組對稱加密
server_write_IV[SecurityParameters.fixed_iv_length]初始化向量,運用于分組對稱加密
然后再后續(xù)的交互中就使用session Key和MAC算法的秘鑰對傳輸?shù)膬?nèi)容進(jìn)行加密和解密。
具體的步驟是先使用MAC秘鑰對內(nèi)容進(jìn)行摘要,然后把摘要放在內(nèi)容的后面使用sessionKey再進(jìn)行加密。對于客戶端發(fā)送的數(shù)據(jù),服務(wù)器端收到之后,需要先使用client_write_key進(jìn)行解密,然后使用client_write_MAC_key對數(shù)據(jù)完整性進(jìn)行驗證。服務(wù)器端發(fā)送的數(shù)據(jù),客戶端會使用server_write_key和server_write_MAC_key進(jìn)行相同的操作。
鏈接:https://www.jianshu.com/p/b0b6b88fe9fe
前端開發(fā)和網(wǎng)頁制作的區(qū)別
既要有理工的嚴(yán)謹(jǐn)又要有文藝的情懷。既要懂得交互設(shè)計,提高用戶體驗,又要具有美術(shù)基礎(chǔ)和審美能力,而在此基礎(chǔ)之上,還要對已完成的頁面進(jìn)行維護和以及網(wǎng)站前端性能做相應(yīng)的優(yōu)化。而網(wǎng)頁制作只是這整個前端開發(fā)過程的一個組成部分,所以真正的前端開發(fā)人員是一個很厲害的角色。
六千以內(nèi)打游戲的臺式電腦6000左右的臺式電腦配置
機箱Tt星際指揮官USB3.0版¥359總共¥5840大部分特效全開不卡沒問題品牌機有類似的配置89千必需的可能要萬元呢聯(lián)想IdeaCentreK330(i52500\/4GB\/1TB)¥8520屏幕尺寸:23英寸CPU型號:Intel酷睿i52500內(nèi)存容量:4GBDDR31333MHz硬盤容量:1TB7200轉(zhuǎn)顯卡GT545光驅(qū)類型:DVD刻錄機性能不如我給的③ 6000左右全套的游戲臺式電腦...
職校有什么專業(yè)?
電工模塊:電工基礎(chǔ)、電氣安全基本知識、安全操作規(guī)程、防觸電技術(shù)、TT系統(tǒng)防護、高壓電器線路、變配電所的運行管理、二次線路控制。筆記本電腦維修模塊:由湖南陽光電子技術(shù)學(xué)校老師全面系統(tǒng)講解:筆記本保護隔離單元電路、系統(tǒng)供電單元電路、CPU供電單元電路、充電單元電路、局部供電單元電路等工作原理及故障維修。
cad快捷鍵命令大全
在CAD軟件操作中,為方便使用者,利用快捷鍵代替鼠標(biāo)。可以利用鍵盤快捷鍵發(fā)出命令,完成繪圖,修改,保存等操作。這些命令鍵就是CAD快捷鍵。那么cad命令有哪些?下面為大家介紹常用CAD命令、快捷鍵和命令說明大全,趕緊看看吧!acad.pgp文件的第二部分定義了命令別名。使用記事本或任何以ASCII格式保存文件的...
說說常用的UNIX命令?
ps -ef|grep smith ps -ef的輸出作為grep smith命令的輸入3.7 UNIX文件系統(tǒng)常用命令UNIX命令 UNIX命令舉例 類似DOS命令顯示當(dāng)前目錄 pwd pwdcd改變目錄 cd cd\/usr cd c:\\usr進(jìn)入家目錄 cd cd創(chuàng)建目錄 mkdirmkdir abc md abc刪除空目錄 rmdirrmdir abc rd abc刪除目錄及其內(nèi)容 rm -rrm -r abc deltree abc...
SAP是什么
PS 項目計劃、預(yù)算、能力計劃、資源管理、結(jié)果分析等; WF 工作定義、流程管理、電子郵件、信息傳送自動化等; PI SAP與其他系統(tǒng)的集成; IS 針對不同行業(yè)提供特殊應(yīng)用。 基礎(chǔ)部分:R\/3系統(tǒng)內(nèi)核、數(shù)據(jù)庫、支持各類平臺的接口、ABAP\/4工具語言等。編輯本段三、SAP R\/3軟件具備的功能和主要特點 功能性:R\/3以模...
什么是photo shop
已經(jīng)退為二線的Thomas Knoll親自負(fù)責(zé)帶領(lǐng)一個小組開發(fā)了PS RAW(7.0)插件。 在其后的發(fā)展歷程中photoshop 8.0的官方版本號是CS、9.0的版本號則變成了CS2。CS是Adobe Creative Suite一套軟件中后面2個單詞的縮寫,代表“創(chuàng)作集合”,是一個統(tǒng)一的設(shè)計環(huán)境,將全新版本的 Adobe Photoshop® CS2、Illustrator® CS2、In...
開目CAD所有鍵盤快捷鍵
F1: 獲取幫助 F2: 實現(xiàn)作圖窗和文本窗口的切換 F3: 控制是否實現(xiàn)對象自動捕捉 F4: 數(shù)字化儀控制 F5: 等軸測平面切換 F6: 控制狀態(tài)行上坐標(biāo)的顯示方式 F7: 柵格顯示模式控制 F8: 正交模式控制 F9: 柵格捕捉模式控制 F10: 極軸模式控制 F11: 對象追 蹤式控制 Ctrl+B: 柵格捕捉模式控制(F9)Ctrl...
linux基礎(chǔ)命令
locate \\*.ps 尋找以 '.ps' 結(jié)尾的文件 - 先運行 'updatedb' 命令 whereis halt 顯示一個二進(jìn)制文件、源碼或man的位置 which halt 顯示一個二進(jìn)制文件或可執(zhí)行文件的完整路徑 掛載一個文件系統(tǒng) mount \/dev\/hda2 \/mnt\/hda2 掛載一個叫做hda2的盤 - 確定目錄 '\/ mnt\/hda2' 已經(jīng)存在 umount \/dev\/hda2...
建筑制圖CAD一些簡單的命令?
PSPACE:從模型空間視口切換到圖紙空間 PS PURGE:刪除圖形數(shù)據(jù)庫中沒有使用的命名對象,例如塊或圖層 PU QLEADER:快速創(chuàng)建引線和引線注釋 LE QUIT:退出 AutoCAD EXIT RECTANG:繪制矩形多段線 REC REDRAW:刷新顯示當(dāng)前視口 R REDRAWALL:刷新顯示所有視口 RA REGEN:重生成圖形并刷新顯示當(dāng)前視口 RE REGENALL:重新生成...
相關(guān)評說:
仁布縣合成: ______ 簡單點說,https是加密傳輸協(xié)議,http是明文傳輸協(xié)議;https=http+ssl證書 https://表明是用SSL加密的,電腦與服務(wù)器之間收發(fā)的信息傳輸將更加安全.Web服務(wù)器啟用SSL需要獲得一個服務(wù)器證書并將該證書與要使用SSL的服務(wù)器綁定. http和https使用的是完全不同的連接方式,用的端口也不一樣,http是80,https是443.http的連接很簡單,是無狀態(tài)的;https鏈接在瀏覽器地址欄有綠色安全鎖標(biāo)識,部署了沃通EV SSL證書的還會顯示綠色地址欄. HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議要比http協(xié)議安全
仁布縣合成: ______ HTTP基本架構(gòu) 下面我們用一張簡單的流程圖來展示HTTP協(xié)議基本架構(gòu),以便大家先有個基本的了解. 9.png Web Client可以是瀏覽器、搜索引擎、機器人等等一切基于HTTP協(xié)議發(fā)起http請求的工具.Web Server可以是任何的能解析HTTP請求...
仁布縣合成: ______ http工作流程1、客戶機與服務(wù)器建立連接2、客戶機發(fā)送請求3、服務(wù)器收到請求后相應(yīng)4、客戶端接收到服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機與服務(wù)器斷開連接
仁布縣合成: ______ HTTP Hypertext Transfer Protocol, WWW服務(wù)程序所用的協(xié)議 HTTP協(xié)議是什么 我們在瀏覽器的地址欄里輸入的網(wǎng)站地址叫做URL(UniformResourceLocator,統(tǒng)一資源定位符).就像每家每戶都有一個門牌地址一樣,每個網(wǎng)頁也都有一個Internet...
仁布縣合成: ______ http是超文本傳輸協(xié)議;ftp是文件傳輸協(xié)議.
仁布縣合成: ______ http是一個協(xié)議 HTTP 協(xié)議定義服務(wù)器端和客戶端之間文件傳輸?shù)臏贤ǚ绞?目前HTTP協(xié)議的版本是Http1.1.RFC 2616描述了HTTP協(xié)議的具體信息. 這個協(xié)議已經(jīng)成為瀏覽器和Web站點之間的標(biāo)準(zhǔn). 當(dāng)我上網(wǎng)的時候底層是如何進(jìn)行交互的? ...
仁布縣合成: ______ Http定義了與 服務(wù)器的交互方法,其中除了一般我們用的最多的GET,POST 其實還有PUT和DELETE 根據(jù)RFC2616標(biāo)準(zhǔn)(現(xiàn)行的HTTP/1.1)其實還有OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT 簡單地結(jié)束一下吧. 1、...
仁布縣合成: ______ HTTP是無狀態(tài)的 也就是說,瀏覽器和服務(wù)器每進(jìn)行一次HTTP操作,就建立一次連接,但任務(wù)結(jié)束就中斷連接.如果客戶端瀏覽器訪問的某個HTML或其他類型的 Web頁中包含有其他的Web資源,如JavaScript文件、圖像文件、CSS文件等;...