https

https解決的問題

因?yàn)樵诰W(wǎng)絡(luò)傳輸中,http是使用明文傳輸?shù)模苋菀妆蝗私俪只蛘叽鄹臄?shù)據(jù)尝江。為了能讓消息能在網(wǎng)絡(luò)中放心的傳輸,在http層之下加入安全套接字層SSL英上,這就是https.
HTTPS協(xié)議的主要作用可以分為兩種:

  1. 建立一個(gè)信息安全通道炭序,來保證數(shù)據(jù)傳輸?shù)陌踩?/li>
  2. 確認(rèn)網(wǎng)站的真實(shí)性啤覆。
那么https是如何對(duì)信息做加密的呢
  1. 傳輸過程中客戶端和服務(wù)端相互通信使用的是對(duì)稱加密,因?yàn)閷?duì)稱加密比非對(duì)稱加密速度快
  2. 既然是對(duì)稱加密惭聂,那
    a. 客戶端和服務(wù)端需要使用同一套公鑰
    b. 連接到同一個(gè)服務(wù)端的多臺(tái)客戶端之間又不能使用同一套公鑰
  3. 那么問題就是如何在傳輸之前把加密用的公鑰給到客戶端和服務(wù)端
    a. 服務(wù)端開發(fā)的時(shí)候窗声,需要向認(rèn)證中心CA獲取整數(shù),也就是讓CA使用它的私鑰對(duì)服務(wù)端的公鑰進(jìn)行加密操作
    b. 在客戶端發(fā)送握手的時(shí)候辜纲,服務(wù)端將證書發(fā)放給客戶端
    c. 每個(gè)機(jī)器系統(tǒng)中都自帶一些公認(rèn)的CA的受信任證書笨觅,這些證書中含有可以解開對(duì)應(yīng)CA認(rèn)證過的服務(wù)端的證書--> 進(jìn)行服務(wù)端證書解密
    d. 這個(gè)時(shí)候就可以得到握手過程中使用的非對(duì)稱加密的公鑰了
    e. 拿到這個(gè)公鑰只是為了生成后續(xù)傳輸過程中的公鑰的第一步
    f. 客戶端拿著上面的說的公鑰古话,服務(wù)端拿著自己的私鑰凯砍,兩邊進(jìn)行非對(duì)稱加密的傳輸,溝通生成后續(xù)傳輸使用的對(duì)稱加密的公鑰喻杈。

https握手的過程:

https.png

下面是別的網(wǎng)站上看到的扫俺,覺得寫得很好苍苞,直接拷貝過來了

  1. client_hello,客戶端發(fā)起請(qǐng)求狼纬,以明文傳輸請(qǐng)求信息柒啤,包含版本信息,加密套件候選列表畸颅,壓縮算法候選列表担巩,隨機(jī)數(shù),擴(kuò)展字段等信息没炒,相關(guān)信息如下:
    支持的最高TSL協(xié)議版本version涛癌,從低到高依次 SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,當(dāng)前基本不再使用低于 TLSv1 的版本;
    客戶端支持的加密套件 cipher suites 列表送火, 每個(gè)加密套件對(duì)應(yīng)前面 TLS 原理中的四個(gè)功能的組合:認(rèn)證算法 Au (身份驗(yàn)證)拳话、密鑰交換算法 KeyExchange(密鑰協(xié)商)、對(duì)稱加密算法 Enc (信息加密)和信息摘要 Mac(完整性校驗(yàn));
    支持的壓縮算法 compression methods 列表种吸,用于后續(xù)的信息壓縮傳輸;
    隨機(jī)數(shù) random_C弃衍,用于后續(xù)的密鑰的生成;
    擴(kuò)展字段 extensions,支持協(xié)議與算法的相關(guān)參數(shù)以及其它輔助信息等坚俗,常見的 SNI 就屬于擴(kuò)展字段镜盯,后續(xù)單獨(dú)討論該字段作用。

  2. server_hello+server_certificate+sever_hello_done
    a. server_hello, 服務(wù)端返回協(xié)商的信息結(jié)果猖败,包括選擇使用的協(xié)議版本 version速缆,選擇的加密套件 cipher suite,選擇的壓縮算法 compression method恩闻、隨機(jī)數(shù) random_S 等艺糜,其中隨機(jī)數(shù)用于后續(xù)的密鑰協(xié)商;
    b. server_certificates, 服務(wù)器端配置對(duì)應(yīng)的證書鏈,用于身份驗(yàn)證與密鑰交換;
    c. server_hello_done,通知客戶端 server_hello 信息發(fā)送結(jié)束;

  3. 證書校驗(yàn)
    客戶端驗(yàn)證證書的合法性破停,如果驗(yàn)證通過才會(huì)進(jìn)行后續(xù)通信翅楼,否則根據(jù)錯(cuò)誤情況不同做出提示和操作,合法性驗(yàn)證包括如下:
    證書鏈的可信性 trusted certificate path真慢,方法如前文所述;
    證書是否吊銷 revocation犁嗅,有兩類方式離線 CRL 與在線 OCSP,不同的客戶端行為會(huì)不同;
    有效期 expiry date晤碘,證書是否在有效時(shí)間范圍;
    域名 domain褂微,核查證書域名是否與當(dāng)前的訪問域名匹配,匹配規(guī)則后續(xù)分析;

  4. client_key_exchange+change_cipher_spec+encrypted_handshake_message
    a. client_key_exchange园爷,合法性驗(yàn)證通過之后宠蚂,客戶端計(jì)算產(chǎn)生隨機(jī)數(shù)字 Pre-master,并用證書公鑰加密童社,發(fā)送給服務(wù)器;
    b. 此時(shí)客戶端已經(jīng)獲取全部的計(jì)算協(xié)商密鑰需要的信息:兩個(gè)明文隨機(jī)數(shù) random_C 和 random_S 與自己計(jì)算產(chǎn)生的 Pre-master求厕,計(jì)算得到協(xié)商密鑰;
    enc_key=Fuc(random_C, random_S, Pre-Master)
    c. change_cipher_spec,客戶端通知服務(wù)器后續(xù)的通信都采用協(xié)商的通信密鑰和加密算法進(jìn)行加密通信;
    d. encrypted_handshake_message扰楼,結(jié)合之前所有通信參數(shù)的 hash 值與其它相關(guān)信息生成一段數(shù)據(jù)呀癣,采用協(xié)商密鑰 session secret 與算法進(jìn)行加密,然后發(fā)送給服務(wù)器用于數(shù)據(jù)與握手驗(yàn)證;

  5. change_cipher_spec+encrypted_handshake_message
    a. 服務(wù)器用私鑰解密加密的 Pre-master 數(shù)據(jù)弦赖,基于之前交換的兩個(gè)明文隨機(jī)數(shù) random_C 和 random_S项栏,計(jì)算得到協(xié)商密鑰:enc_key=Fuc(random_C, random_S, Pre-Master);
    b. 計(jì)算之前所有接收信息的 hash 值,然后解密客戶端發(fā)送的 encrypted_handshake_message蹬竖,驗(yàn)證數(shù)據(jù)和密鑰正確性;
    c. change_cipher_spec, 驗(yàn)證通過之后沼沈,服務(wù)器同樣發(fā)送 change_cipher_spec 以告知客戶端后續(xù)的通信都采用協(xié)商的密鑰與算法進(jìn)行加密通信;
    d. encrypted_handshake_message, 服務(wù)器也結(jié)合所有當(dāng)前的通信參數(shù)信息生成一段數(shù)據(jù)并采用協(xié)商密鑰 session secret 與算法加密并發(fā)送到客戶端;

  6. 握手結(jié)束
    客戶端計(jì)算所有接收信息的 hash 值,并采用協(xié)商密鑰解密 encrypted_handshake_message币厕,驗(yàn)證服務(wù)器發(fā)送的數(shù)據(jù)和密鑰列另,驗(yàn)證通過則握手完成;

  7. 加密通信
    開始使用協(xié)商密鑰與算法進(jìn)行加密通信。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旦装,一起剝皮案震驚了整個(gè)濱河市页衙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阴绢,老刑警劉巖店乐,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異旱函,居然都是意外死亡响巢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門棒妨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事券腔》拢” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵纷纫,是天一觀的道長(zhǎng)枕扫。 經(jīng)常有香客問我,道長(zhǎng)辱魁,這世上最難降的妖魔是什么烟瞧? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮染簇,結(jié)果婚禮上参滴,老公的妹妹穿的比我還像新娘。我一直安慰自己锻弓,他們只是感情好砾赔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著青灼,像睡著了一般暴心。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杂拨,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天专普,我揣著相機(jī)與錄音,去河邊找鬼弹沽。 笑死脆诉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贷币。 我是一名探鬼主播击胜,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼役纹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起促脉,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤辰斋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瘸味,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宫仗,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年旁仿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藕夫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毅贮,靈堂內(nèi)的尸體忽然破棺而出办悟,到底是詐尸還是另有隱情,我是刑警寧澤滩褥,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布病蛉,位于F島的核電站,受9級(jí)特大地震影響瑰煎,放射性物質(zhì)發(fā)生泄漏铺然。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一酒甸、第九天 我趴在偏房一處隱蔽的房頂上張望魄健。 院中可真熱鬧,春花似錦烘挫、人聲如沸诀艰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽其垄。三九已至,卻和暖如春卤橄,著一層夾襖步出監(jiān)牢的瞬間绿满,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工窟扑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喇颁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓嚎货,卻偏偏與公主長(zhǎng)得像橘霎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子殖属,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359