https協(xié)議詳解
HTTPS協(xié)議概念
超文本傳輸安全協(xié)議(Hypertext Transfer Protocol Secure,簡(jiǎn)稱(chēng):HTTPS)是一種通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議。HTTPS經(jīng)由HTTP進(jìn)行通信,利用SSL/TLS來(lái)加密數(shù)據(jù)包。HTTPS的主要目的是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,保護(hù)交換數(shù)據(jù)的隱私與完整性。HTTP協(xié)議采用明文傳輸信息,存在信息竊聽(tīng)、信息篡改和信息劫持的風(fēng)險(xiǎn),而協(xié)議TLS/SSL具有身份驗(yàn)證、信息加密和完整性校驗(yàn)的功能,可以避免此類(lèi)問(wèn)題發(fā)生。安全層的主要職責(zé)就是對(duì)發(fā)起的HTTP請(qǐng)求的數(shù)據(jù)進(jìn)行加密操作 和 對(duì)接收到的HTTP的內(nèi)容進(jìn)行解密操作。
HTTPS通信(握手)過(guò)程
- 客戶(hù)端向服務(wù)器發(fā)起請(qǐng)求,請(qǐng)求中包含使用的協(xié)議版本號(hào)、生成的一個(gè)隨機(jī)數(shù)、以及客戶(hù)端支持的加密方法。
- 服務(wù)器端接收到請(qǐng)求后,確認(rèn)雙方使用的加密方法、并給出服務(wù)器的證書(shū)、以及一個(gè)服務(wù)器生成的隨機(jī)數(shù)。
- 客戶(hù)端確認(rèn)服務(wù)器證書(shū)有效后,生成一個(gè)新的隨機(jī)數(shù),并使用數(shù)字證書(shū)中的公鑰,加密這個(gè)隨機(jī)數(shù),然后發(fā)給服 務(wù)器。并且還會(huì)提供一個(gè)前面所有內(nèi)容的 hash 的值,用來(lái)供服務(wù)器檢驗(yàn)。
- 服務(wù)器使用自己的私鑰,來(lái)解密客戶(hù)端發(fā)送過(guò)來(lái)的隨機(jī)數(shù)。并提供前面所有內(nèi)容的 hash 值來(lái)供客戶(hù)端檢驗(yàn)。
- 客戶(hù)端和服務(wù)器端根據(jù)約定的加密方法使用前面的三個(gè)隨機(jī)數(shù),生成對(duì)話(huà)秘鑰,以后的對(duì)話(huà)過(guò)程都使用這個(gè)秘鑰來(lái)加密信息。
HTTPS的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
使用HTTPS協(xié)議可以認(rèn)證用戶(hù)和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶(hù)端和服務(wù)器
使用HTTPS協(xié)議可以進(jìn)行加密傳輸、身份認(rèn)證,通信更加安全,防止數(shù)據(jù)在傳輸過(guò)程中被竊取、修改,確保數(shù)據(jù)安全性
HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對(duì)的安全,但是大幅增加了中間人攻擊的成本
缺點(diǎn):
HTTPS需要做服務(wù)器和客戶(hù)端雙方的加密個(gè)解密處理,耗費(fèi)更多服務(wù)器資源,過(guò)程復(fù)雜
HTTPS協(xié)議握手階段比較費(fèi)時(shí),增加頁(yè)面的加載時(shí)間
SSL證書(shū)是收費(fèi)的,功能越強(qiáng)大的證書(shū)費(fèi)用越高
HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本
SSL證書(shū)需要綁定IP,不能再同一個(gè)IP上綁定多個(gè)域名
HTTPS如何保證安全
結(jié)合兩種加密?式,將對(duì)稱(chēng)加密的密鑰使??對(duì)稱(chēng)加密的公鑰進(jìn)?加密,然后發(fā)送出去,接收?使?私鑰進(jìn)?解密得到對(duì)稱(chēng)加密的密鑰,然后雙?可以使?對(duì)稱(chēng)加密來(lái)進(jìn)?溝通。 此時(shí)?帶來(lái)?個(gè)問(wèn)題,中間?問(wèn)題:如果此時(shí)在客戶(hù)端和服務(wù)器之間存在?個(gè)中間?,這個(gè)中間?只需要把原本雙?通信互發(fā)的公鑰,換成??的公鑰,這樣中間?就可以輕松解密通信雙?所發(fā)送的所有數(shù)據(jù)。 所以這個(gè)時(shí)候需要?個(gè)安全的第三?頒發(fā)證書(shū)(CA),證明身份的身份,防?被中間?攻擊。 證書(shū)中包括:簽發(fā)者、證書(shū)?途、使?者公鑰、使?者私鑰、使?者的HASH算法、證書(shū)到期時(shí)間等。但是問(wèn)題來(lái)了,如果中間?篡改了證書(shū),那么身份證明是不是就?效了?這個(gè)證明就?買(mǎi)了,這個(gè)時(shí)候需要?個(gè)新的技術(shù),數(shù)字簽名。 數(shù)字簽名就是?CA?帶的HASH算法對(duì)證書(shū)的內(nèi)容進(jìn)?HASH得到?個(gè)摘要,再?CA的私鑰加密,最終組成數(shù)字簽名。當(dāng)別?把他的證書(shū)發(fā)過(guò)來(lái)的時(shí)候,我再?同樣的Hash算法,再次?成消息摘要,然后?CA的公鑰對(duì)數(shù)字簽名解密,得到CA創(chuàng)建的消息摘要,兩者??,就知道中間有沒(méi)有被?篡改了。這個(gè)時(shí)候就能最?程度保證通信的安全了。
對(duì)稱(chēng)加密:
即通信的雙?都使?同?個(gè)秘鑰進(jìn)?加解密,對(duì)稱(chēng)加密雖然很簡(jiǎn)單性能也好,但是?法解決?次把秘鑰發(fā)給對(duì)?的問(wèn)題,很容易被?客攔截秘鑰。
非對(duì)稱(chēng)加密:
對(duì)稱(chēng)加密雖然安全性更?,但是帶來(lái)的問(wèn)題就是速度很慢,影響性能。
- 私鑰 + 公鑰= 密鑰對(duì)
- 即?私鑰加密的數(shù)據(jù),只有對(duì)應(yīng)的公鑰才能解密,?公鑰加密的數(shù)據(jù),只有對(duì)應(yīng)的私鑰才能解密
- 因?yàn)橥ㄐ烹p方的手里都有一套自己的密鑰對(duì),通信之前雙方會(huì)先把自己的公鑰都先發(fā)給對(duì)方
- 然后對(duì)方再拿著這個(gè)公鑰來(lái)加密數(shù)據(jù)響應(yīng)給對(duì)方,等到到了對(duì)方那里,對(duì)方再用自己的私鑰進(jìn)行解密
TLS/SSL的工作原理
TLS/SSL概述
即安全傳輸層協(xié)議
TLS/SSL的工作方式就是客戶(hù)端使用非對(duì)稱(chēng)加密與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)身份的驗(yàn)證并協(xié)商對(duì)稱(chēng)加密使用的秘鑰。對(duì)稱(chēng)加密算法采用協(xié)商秘鑰對(duì)信息以及信息摘要進(jìn)行加密通信,不同節(jié)點(diǎn)之間采用的對(duì)稱(chēng)秘鑰不同,從而保證信息只能通信雙方獲取。
TLS/SSL全稱(chēng)安全傳輸層協(xié)議(Transport Layer Security), 是介于TCP和HTTP之間的一層安全協(xié)議,不影響原有的TCP協(xié)議和HTTP協(xié)議,所以使用HTTPS基本上不需要對(duì)HTTP頁(yè)面進(jìn)行太多的改造。TLS/SSL的功能實(shí)現(xiàn)主要依賴(lài)三類(lèi)基本算法。
TLS/SSL功能實(shí)現(xiàn)
散列函數(shù)hash:基于散列函數(shù)驗(yàn)證信息的完整性
對(duì)稱(chēng)加密:對(duì)稱(chēng)加密算法采用協(xié)商的秘鑰對(duì)數(shù)據(jù)加密
非對(duì)稱(chēng)加密:非對(duì)稱(chēng)加密實(shí)現(xiàn)身份認(rèn)證和秘鑰協(xié)商
數(shù)字證書(shū)
數(shù)字證書(shū)產(chǎn)生的原因
現(xiàn)在的方法也不一定是安全的,因?yàn)闆](méi)有辦法確定得到的公鑰就一定是安全的公鑰??赡艽嬖谝粋€(gè)中間人,截取了對(duì)方發(fā)給我們的公鑰,然后將他自己的公鑰發(fā)送給我們,當(dāng)我們使用他的公鑰加密后發(fā)送的信息,就可以被他用自己的私鑰解密。然后他偽裝成我們以同樣的方法向?qū)Ψ桨l(fā)送信息,這樣我們的信息就被竊取了,然而自己還不知道。為了解決這樣的問(wèn)題,可以使用數(shù)字證書(shū)。
數(shù)字證書(shū)概念及工作原理
首先使用一種 Hash 算法來(lái)對(duì)公鑰和其他信息進(jìn)行加密,生成一個(gè)信息摘要,然后讓有公信力的認(rèn)證中心(簡(jiǎn)稱(chēng) CA )用它的私鑰對(duì)消息摘要加密,形成簽名。最后將原始的信息和簽名合在一起,稱(chēng)為數(shù)字證書(shū)。當(dāng)接收方收到數(shù)字證書(shū)的時(shí)候,先根據(jù)原始信息使用同樣的 Hash 算法生成一個(gè)摘要,然后使用公證加工的公鑰來(lái)對(duì)數(shù)字證書(shū)中的摘要進(jìn)行解密,最后將解密的摘要和生成的摘要進(jìn)行對(duì)比,就能發(fā)現(xiàn)得到的信息是否被更改了。這個(gè)方法最要的是認(rèn)證中心的可靠性,一般瀏覽器里會(huì)內(nèi)置一些頂層的認(rèn)證中心的證書(shū),相當(dāng)于我們自動(dòng)信任了他們,只有這樣才能保證數(shù)據(jù)的安全。要進(jìn)行對(duì)比,就能發(fā)現(xiàn)得到的信息是否被更改了。
- 使用Feign配置請(qǐng)求頭以及支持Https協(xié)議
- Nexus使用nginx代理實(shí)現(xiàn)支持HTTPS協(xié)議
- Spring Boot項(xiàng)目如何同時(shí)支持HTTP和HTTPS協(xié)議的實(shí)現(xiàn)
- Spring Boot應(yīng)用程序同時(shí)支持HTTP和HTTPS協(xié)議的實(shí)現(xiàn)方法
- SpringBoot2.0如何啟用https協(xié)議
- 關(guān)于Https協(xié)議和HttpClient的實(shí)現(xiàn)詳解
- startssl申請(qǐng)SSL證書(shū) 并且配置 iis 啟用https協(xié)議
- Java獲取http和https協(xié)議返回的json數(shù)據(jù)
- Linux下nginx配置https協(xié)議訪問(wèn)的方法
- iOS9蘋(píng)果將原h(huán)ttp協(xié)議改成了https協(xié)議的方法
- apache中使用mod_gnutls模塊實(shí)現(xiàn)多個(gè)SSL站點(diǎn)配置(多個(gè)HTTPS協(xié)議的虛擬主機(jī))
相關(guān)文章
vscode內(nèi)網(wǎng)訪問(wèn)服務(wù)器的方法
這篇文章主要介紹了vscode內(nèi)網(wǎng)訪問(wèn)服務(wù)器的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06配置管理和服務(wù)發(fā)現(xiàn)之Confd和Consul使用場(chǎng)景詳解
這篇文章主要為大家介紹了配置管理和服務(wù)發(fā)現(xiàn)之Confd和Consul使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03使用?Koa?+?TS?+?ESLlint?搭建node服務(wù)器的過(guò)程詳解
這篇文章主要介紹了使用?Koa?+?TS?+?ESLlint?搭建node服務(wù)器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05X-Frame-Options頭未設(shè)置 防止網(wǎng)頁(yè)被iframe內(nèi)框架調(diào)用
有時(shí)候?yàn)榱朔乐咕W(wǎng)頁(yè)被別人的網(wǎng)站iFrame,我們可以通過(guò)在服務(wù)器設(shè)置HTTP頭部中的X-Frame-Options信息,需要的朋友可以參考下2017-03-03每天學(xué)一分鐘使用Git服務(wù)器實(shí)現(xiàn)查看Debug分支及修復(fù)
這篇文章主要教大家怎樣實(shí)現(xiàn)查看Debug分支及修復(fù),學(xué)習(xí)是一條長(zhǎng)遠(yuǎn)而無(wú)盡頭之路,堅(jiān)持就不用多少說(shuō)了,只要大家每天花一分鐘的時(shí)間來(lái)學(xué)習(xí)一下Git相信查看Debug分支及修復(fù)對(duì)大家來(lái)說(shuō)就是so easy2021-08-08