1、前言
最近在倒騰SSL方面的項(xiàng)目,之前只是雖然對(duì)SSL了解過(guò),但是不夠深入,正好有機(jī)會(huì),認(rèn)真學(xué)習(xí)一下。開始了解SSL的是從https開始的,自從百度支持https以后,如今全站https的趨勢(shì)越來(lái)越強(qiáng)烈,互聯(lián)網(wǎng)對(duì)安全的認(rèn)識(shí)越來(lái)越深入。本文根據(jù)自己的實(shí)際情況,對(duì)SSL鏈接建立做個(gè)總結(jié)。SSL相關(guān)的非對(duì)稱加密和加密,涉及到公鑰、私鑰、證書、對(duì)稱密鑰,這些非常復(fù)雜,本文不會(huì)涉及。本文重點(diǎn)介紹SSL的握手過(guò)程,客戶端和服務(wù)端的步驟,通過(guò)wireshark抓包分析整個(gè)過(guò)程。
2、基本概念
SSL:(Secure Socket Layer,安全套接字層),位于可靠的面向連接的網(wǎng)絡(luò)層協(xié)議和應(yīng)用層協(xié)議之間的一種協(xié)議層。SSL通過(guò)互相認(rèn)證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實(shí)現(xiàn)客戶端和服務(wù)器之間的安全通訊。該協(xié)議由兩層組成:SSL記錄協(xié)議和SSL握手協(xié)議。
TLS:(Transport Layer Security,傳輸層安全協(xié)議),用于兩個(gè)應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成:TLS記錄協(xié)議和TLS握手協(xié)議。
TLS是在SSL的基礎(chǔ)上標(biāo)準(zhǔn)化的產(chǎn)物,目前SSL3.0與TLS1.0保持一致的,二者是并列關(guān)系,只是大家習(xí)慣稱呼SSL。注明的web服務(wù)nginx默認(rèn)支持的就是TLS1.0、TLS1.1、TLS1.2協(xié)議。調(diào)用的openssl庫(kù)中,對(duì)應(yīng)的就是ssl3_acceptt函數(shù)。
SSL/TLS位于傳輸層和應(yīng)用層之間,應(yīng)用層數(shù)據(jù)不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對(duì)從應(yīng)用層收到的數(shù)據(jù)進(jìn)行加密,并增加自己的SSL頭。
3、握手過(guò)程
我使用nginx搭建了一個(gè)https的服務(wù),nginx的默認(rèn)ssl cipher為HIGH:!aNULL:!MD5; 不同的cipher 決定了握手的交互過(guò)程。chrome瀏覽器支持的cipher如下所示:
cipher的格式為:認(rèn)證算法_密鑰交換算法_加密算法_ 摘要算法
首先看看最基本的基于RSA的密鑰協(xié)商算法,配置的ssl sipher為 AES256-GCM-SHA256。
使用wireshark抓包分析,抓包如下所示:
從上面報(bào)文可以看出,SSL建立過(guò)程如下圖所示:
使用橢圓曲線(ECDHE)算法作為密鑰交換算法,配置ssl ciper為:,交互流程如下所示:
抓包看如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26