Https兼容性性問(wèn)題

關(guān)于HTTPS的相關(guān)問(wèn)題

HTTP (Hypertext Transfer Protocol)超文本傳輸協(xié)議

HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協(xié)議

mou

HTTPS和HTTP的區(qū)別

HTTPs協(xié)議需要申請(qǐng)證書董习。
http鏈接很簡(jiǎn)單珊肃,是無(wú)狀態(tài)的HTTPS協(xié)議由SSL+HTTP協(xié)議構(gòu)建的可以進(jìn)行加密傳輸疲吸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議伦连,HTTPS協(xié)議解決了以下問(wèn)題:

1.信任主機(jī)的問(wèn)題

采用https 的server 必須從CA 申請(qǐng)一個(gè)用于證明服務(wù)器用途類型的證書抠藕。改證書只有用于對(duì)應(yīng)的server 的時(shí)候,客戶端才信任此主機(jī)占键。所以目前所有的銀行系統(tǒng)網(wǎng)站获洲,關(guān)鍵部分應(yīng)用都是https 的。 客戶通過(guò)信任該證書淹禾,從而信任了該主機(jī)馁菜。其實(shí)這樣做效率很低,但是銀行更側(cè)重安全铃岔。 這一點(diǎn)對(duì)我們沒(méi)有任何意義火邓,我們的server,采用的證書不管自己issue 還是從公眾的地方issue德撬, 客戶端都是自己人铲咨,所以我們也就肯定信任該server。

2.通訊過(guò)程中的數(shù)據(jù)的泄密和被竄改蜓洪。

1)一般意義上的https纤勒, 就是 server 有一個(gè)證書。

a) 主要目的是保證server 就是他聲稱的server隆檀。這個(gè)跟第一點(diǎn)一樣摇天。

b) 服務(wù)端和客戶端之間的所有通訊,都是加密的恐仑。
  
(I)具體講泉坐,是客戶端產(chǎn)生一個(gè)對(duì)稱的密鑰,通過(guò)server 的證書來(lái)交換密鑰裳仆。 一般意義上的握手過(guò)程腕让。
  (II)加下來(lái)所有的信息往來(lái)就都是加密的歧斟。 第三方即使截獲纯丸,也沒(méi)有任何意義。因?yàn)樗麤](méi)有密鑰静袖。 當(dāng)然竄改也就沒(méi)有什么意義了觉鼻。
  
2)少許對(duì)客戶端有要求的情況下,會(huì)要求客戶端也必須有一個(gè)證書

a) 這里客戶端證書队橙,其實(shí)就類似表示個(gè)人信息的時(shí)候坠陈,除了用戶名/密碼萨惑, 還有一個(gè)CA (證書授權(quán)中心)認(rèn)證過(guò)的身份。 應(yīng)為個(gè)人證書一般來(lái)說(shuō)上別人無(wú)法模擬的仇矾,所有這樣能夠更深的確認(rèn)自己的身份咒钟。
b) 目前少數(shù)個(gè)人銀行的專業(yè)版是這種做法,具體證書可能是拿U盤作為一個(gè)備份的載體若未。像我用的交通銀行的網(wǎng)上銀行就是采取的這種方式朱嘴。 HTTPS 一定是繁瑣的。

TLS/SSL原理

HTTPS 協(xié)議的主要功能基本都依賴于 TLS/SSL 協(xié)議

SSL Secure Sockets Layer 安全套接字層
TLS Transport Layer Security 安全傳輸層

均采用傳輸層加密

OSI七層網(wǎng)絡(luò)模型
OSI七層網(wǎng)絡(luò)模型

TLS的前身是SSL粗合,TLS 1.0通常被標(biāo)示為SSL 3.1萍嬉,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3

TCP/IP通訊協(xié)議

TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu)隙疚,每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來(lái)完成自己的需求壤追。這4層分別為:

應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP)供屉、文件傳輸協(xié)議(FTP)行冰、網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)協(xié)議(Telnet)等。

傳輸層:在此層中伶丐,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù)悼做,如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等哗魂,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又懈刈撸@一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收录别。

互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能朽色,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)组题。

網(wǎng)絡(luò)接口層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理葫男,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、Serial Line等)來(lái)傳送數(shù)據(jù)崔列。

TLS/SSL 的功能實(shí)現(xiàn)主要依賴于三類基本算法:散列函數(shù) Hash梢褐、對(duì)稱加密和非對(duì)稱加密,其利用非對(duì)稱加密實(shí)現(xiàn)身份認(rèn)證和密鑰協(xié)商峻呕,對(duì)稱加密算法采用協(xié)商的密鑰對(duì)數(shù)據(jù)加密利职,基于散列函數(shù)驗(yàn)證信息的完整性趣效。

原理

散列函數(shù) Hash瘦癌,常見(jiàn)的有 MD5、SHA1跷敬、SHA256讯私,該類函數(shù)特點(diǎn)是函數(shù)單向不可逆、對(duì)輸入非常敏感、輸出長(zhǎng)度固定斤寇,針對(duì)數(shù)據(jù)的任何修改都會(huì)改變散列函數(shù)的結(jié)果桶癣,用于防止信息篡改并驗(yàn)證數(shù)據(jù)的完整性;對(duì)稱加密娘锁,常見(jiàn)的有 AES-CBC牙寞、DES、3DES莫秆、AES-GCM等间雀,相同的密鑰可以用于信息的加密和解密,掌握密鑰才能獲取信息镊屎,能夠防止信息竊聽(tīng)惹挟,通信方式是1對(duì)1;非對(duì)稱加密缝驳,即常見(jiàn)的 RSA 算法连锯,還包括 ECC、DH 等算法用狱,算法特點(diǎn)是运怖,密鑰成對(duì)出現(xiàn),一般稱為公鑰(公開(kāi))和私鑰(保密)夏伊,公鑰加密的信息只能私鑰解開(kāi)驳规,私鑰加密的信息只能公鑰解開(kāi)。因此掌握公鑰的不同客戶端之間不能互相解密信息署海,只能和掌握私鑰的服務(wù)器進(jìn)行加密通信吗购,服務(wù)器可以實(shí)現(xiàn)1對(duì)多的通信,客戶端也可以用來(lái)驗(yàn)證掌握私鑰的服務(wù)器身份砸狞。

在信息傳輸過(guò)程中捻勉,散列函數(shù)不能單獨(dú)實(shí)現(xiàn)信息防篡改,因?yàn)槊魑膫鬏數渡虚g人可以修改信息之后重新計(jì)算信息摘要踱启,因此需要對(duì)傳輸?shù)男畔⒁约靶畔⒄M(jìn)行加密;對(duì)稱加密的優(yōu)勢(shì)是信息傳輸1對(duì)1研底,需要共享相同的密碼埠偿,密碼的安全是保證信息安全的基礎(chǔ),服務(wù)器和 N 個(gè)客戶端通信榜晦,需要維持 N 個(gè)密碼記錄冠蒋,且缺少修改密碼的機(jī)制;非對(duì)稱加密的特點(diǎn)是信息傳輸1對(duì)多乾胶,服務(wù)器只需要維持一個(gè)私鑰就能夠和多個(gè)客戶端進(jìn)行加密通信抖剿,但服務(wù)器發(fā)出的信息能夠被所有的客戶端解密朽寞,且該算法的計(jì)算復(fù)雜,加密速度慢斩郎。

TLS 的基本工作方式是脑融,客戶端使用非對(duì)稱加密與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)身份驗(yàn)證并協(xié)商對(duì)稱加密使用的密鑰缩宜,然后對(duì)稱加密算法采用協(xié)商密鑰對(duì)信息以及信息摘要進(jìn)行加密通信肘迎,不同的節(jié)點(diǎn)之間采用的對(duì)稱密鑰不同,從而可以保證信息只能通信雙方獲取锻煌。

基于 RSA 握手和密鑰交換的客戶端驗(yàn)證服務(wù)器為示例詳解握手過(guò)程膜宋。
haha

#######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ù)以及其它輔助信息等,常見(jiàn)的 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)證通過(guò)才會(huì)進(jìn)行后續(xù)通信限书,否則根據(jù)錯(cuò)誤情況不同做出提示和操作虫蝶,合法性驗(yàn)證包括如下:

證書鏈的可信性 trusted certificate path,方法如前文所述倦西;

證書是否吊銷 revocation能真,有兩類方式離線 CRL 與在線 OCSP,不同的客戶端行為會(huì)不同扰柠;

有效期 expiry date粉铐,證書是否在有效時(shí)間范圍;

域名 domain卤档,核查證書域名是否與當(dāng)前的訪問(wèn)域名匹配蝙泼,匹配規(guī)則后續(xù)分析;

#######4.client_key_exchange+change_cipher_spec+encrypted_handshake_message

(a) client_key_exchange劝枣,合法性驗(yàn)證通過(guò)之后汤踏,客戶端計(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)證;

#######6.握手結(jié)束

客戶端計(jì)算所有接收信息的 hash 值才避,并采用協(xié)商密鑰解密 encrypted_handshake_message,驗(yàn)證服務(wù)器發(fā)送的數(shù)據(jù)和密鑰氨距,驗(yàn)證通過(guò)則握手完成工扎;

#######7.加密通信

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

HTTPS性能

HTTPS 原理與優(yōu)勢(shì):身份驗(yàn)證衔蹲、信息加密與完整性校驗(yàn)等肢娘,且未對(duì) TCP 和 HTTP 協(xié)議做任何修改。但通過(guò)增加新協(xié)議以實(shí)現(xiàn)更安全的通信必然需要付出代價(jià)舆驶,HTTPS 協(xié)議的性能損耗主要體現(xiàn)如下:

1.增加延時(shí)

分析前面的握手過(guò)程橱健,一次完整的握手至少需要兩端依次來(lái)回兩次通信,至少增加延時(shí)2* RTT沙廉,利用會(huì)話緩存從而復(fù)用連接拘荡,延時(shí)也至少1* RTT*。

2.消耗較多的 CPU 資源

除數(shù)據(jù)傳輸之外撬陵,HTTPS 通信主要包括對(duì)對(duì)稱加解密珊皿、非對(duì)稱加解密(服務(wù)器主要采用私鑰解密數(shù)據(jù))网缝;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蟋定,隨后出現(xiàn)的幾起案子粉臊,更是在濱河造成了極大的恐慌,老刑警劉巖驶兜,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扼仲,死亡現(xiàn)場(chǎng)離奇詭異驳棱,居然都是意外死亡焰盗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門号坡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肆资,“玉大人矗愧,你說(shuō)我怎么就攤上這事≈T” “怎么了唉韭?”我有些...
    開(kāi)封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)颤专。 經(jīng)常有香客問(wèn)我纽哥,道長(zhǎng),這世上最難降的妖魔是什么栖秕? 我笑而不...
    開(kāi)封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任春塌,我火速辦了婚禮,結(jié)果婚禮上簇捍,老公的妹妹穿的比我還像新娘只壳。我一直安慰自己,他們只是感情好暑塑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布吼句。 她就那樣靜靜地躺著,像睡著了一般事格。 火紅的嫁衣襯著肌膚如雪惕艳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天驹愚,我揣著相機(jī)與錄音远搪,去河邊找鬼。 笑死逢捺,一個(gè)胖子當(dāng)著我的面吹牛谁鳍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倘潜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绷柒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涮因,我...
    開(kāi)封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤废睦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蕊退,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體郊楣,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憔恳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年瓤荔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钥组。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡输硝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出程梦,到底是詐尸還是另有隱情点把,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布屿附,位于F島的核電站郎逃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挺份。R本人自食惡果不足惜褒翰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匀泊。 院中可真熱鬧优训,春花似錦、人聲如沸各聘。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)躲因。三九已至早敬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間大脉,已是汗流浹背搞监。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箱靴,地道東北人腺逛。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親棍矛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子安疗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容