如何解析HTTPS與SSL原理,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋混凝土攪拌站等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。
HTTPS是指結(jié)合HTTP和SSL來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)瀏覽器和服務(wù)器之間的安全通信。HTTPS被融合到當(dāng)今網(wǎng)絡(luò)操作系統(tǒng)和網(wǎng)絡(luò)瀏覽器中,他依賴于網(wǎng)絡(luò)服務(wù)器是否支持HTTPS協(xié)議。本文重點(diǎn)是闡述HTTPS和SSL證書(shū)的原理,不涉及具體實(shí)現(xiàn)。在開(kāi)始敘述原理之前,先明確幾個(gè)網(wǎng)絡(luò)安全方面的基礎(chǔ)概念。
一個(gè)對(duì)稱加密算法由五個(gè)部分組成:
明文:原始消息或數(shù)據(jù)
加密算法
密鑰
密文:使用密鑰通過(guò)加密算法對(duì)明文計(jì)算后的結(jié)果
解密算法:使用密文和相同密鑰通過(guò)解密算法產(chǎn)生原文
與對(duì)稱加密算法不同的是,非對(duì)稱加密算法使用的加密密鑰和解密密鑰是不同的。
公鑰密碼屬于對(duì)稱加密算法中的一種,公鑰密碼體系中有一個(gè)公鑰和一個(gè)密鑰,公鑰是公開(kāi)給所有人使用的,密鑰只有自己知道,通常公鑰根據(jù)一個(gè)密鑰進(jìn)行加密,根據(jù)另一個(gè)密鑰進(jìn)行解密。
RSA公鑰密碼算法是公鑰密碼算法中的一種,RSA中的加密和解密都可以使用公鑰或者私鑰,但是用公鑰加密的密文只能使用私鑰解密,用私鑰加密的密文智能使用公鑰解密。
這里只敘述SSL證書(shū)的原理,至于如何申請(qǐng)證書(shū),如何生成證書(shū),如何部署證書(shū)可以Google得到。在介紹SSL證書(shū)前,需要先知道證書(shū)的指紋和指紋算法。
指紋是在證書(shū)信息(證書(shū)機(jī)構(gòu),公司名,證書(shū)有效期等)后面加上一段內(nèi)容,保證信息沒(méi)有被修改過(guò)。具體操作是將將原來(lái)的信息通過(guò)指紋算法算法(一個(gè)hash算法)計(jì)算得到指紋與原信息一起發(fā)出去。用戶收到這份數(shù)據(jù)后,首先將原信息用同樣的指紋算法計(jì)算結(jié)果,將得到的結(jié)果與指紋對(duì)比,如果一致,則說(shuō)明信息沒(méi)有被修改過(guò)。當(dāng)然這個(gè)過(guò)程是有危險(xiǎn)的,黑客完全可以修改內(nèi)容并重新通過(guò)指紋算法生成指紋。這里需要使用加密算法來(lái)解決這個(gè)隱患。
假設(shè)一個(gè)公司B company向證書(shū)機(jī)構(gòu)xxx CA申請(qǐng)SSL證書(shū),他會(huì)得到一張類似下面這張圖的證書(shū)
B company得到這張證書(shū)后,會(huì)在與用戶通信的過(guò)程中將證書(shū)發(fā)送給用戶,用戶首先會(huì)檢測(cè)辦法證書(shū)的機(jī)構(gòu),如果是大家都公認(rèn)的證書(shū)機(jī)構(gòu),操作系統(tǒng)在出廠時(shí)會(huì)內(nèi)置這個(gè)機(jī)構(gòu)的機(jī)構(gòu)信息和公鑰,例如xxx CA,如果是一個(gè)不受信任的證書(shū)機(jī)構(gòu),應(yīng)用程序(比如瀏覽器)會(huì)發(fā)出警告,如果是受信任的證書(shū)機(jī)構(gòu),應(yīng)用程序會(huì)使用預(yù)置的xxx CA的公鑰去解密最后的指紋內(nèi)容和指紋算法,然后再把前面的證書(shū)內(nèi)容用指紋算法計(jì)算后與指紋內(nèi)容比對(duì),由于指紋內(nèi)容是由證書(shū)機(jī)構(gòu)唯一的私鑰加密的,因此只要比對(duì)成功說(shuō)明證書(shū)是沒(méi)有人被人修改過(guò)的。接下來(lái)用戶就可以放心使用該公司的公鑰了。
HTTPS的出現(xiàn)是為了解決網(wǎng)絡(luò)通信中數(shù)據(jù)傳輸不安全的問(wèn)題,下面我們以登陸為例,先看一個(gè)網(wǎng)絡(luò)通信最簡(jiǎn)單的過(guò)程,再一步步分析這個(gè)過(guò)程中不安全的因素以及解決辦法。
這個(gè)通信過(guò)程槽點(diǎn)太多,這樣一個(gè)網(wǎng)絡(luò)通信過(guò)程屬于小學(xué)生水準(zhǔn),首先最明顯一個(gè)錯(cuò)誤是作為客戶端如何知道給予回應(yīng)一定是目標(biāo)服務(wù)器,黑客可以有一百種辦法來(lái)偽裝這個(gè)服務(wù)器,輕輕松松就拿到用戶的用戶名和密碼,所以圖中也只能無(wú)奈的使用“某個(gè)地址”來(lái)標(biāo)識(shí)服務(wù)器。為了解決這個(gè)問(wèn)題,首先需要讓瀏覽器確認(rèn)對(duì)方的身份,于是有了下面的通信過(guò)程。
確認(rèn)服務(wù)器身份就需要用到前面說(shuō)過(guò)的RSA算法了,由于RSA算法有下面這幾個(gè)特性,所以是可以用來(lái)唯一確認(rèn)服務(wù)器身份的:
私鑰的唯一性
私鑰的保密性(只有服務(wù)器知道這個(gè)私鑰)
只能用公鑰解密用私鑰加密過(guò)的密文(對(duì)稱加密算法的特點(diǎn))
其中“()”里的內(nèi)容是服務(wù)器用私鑰加密后的內(nèi)容,一般服務(wù)器會(huì)將明文加密,瀏覽器在收到消息后首先會(huì)用公鑰解密密文,由前面特性3可以知道,公鑰和解密算法是可以解出明文的,如果解不出來(lái)說(shuō)明對(duì)方不是目標(biāo)服務(wù)器,瀏覽器解密后會(huì)與明文做比對(duì),如果比對(duì)成功,由私鑰的唯一性和保密性就可以確認(rèn)對(duì)方是目標(biāo)服務(wù)器。然而確認(rèn)服務(wù)器身份后,在向服務(wù)器發(fā)送數(shù)據(jù)的過(guò)程中,如果數(shù)據(jù)被黑客截獲,我們的用戶名和密碼也會(huì)落入黑客之手,于是下一步我們需要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行加密。
瀏覽器對(duì)用戶名和密碼用公鑰進(jìn)行加密,由于
只能用私鑰解密用公鑰加密過(guò)的密文
于是密文只能由服務(wù)器用私鑰解密,黑客即使拿到密文,也是無(wú)法解密的。但是在服務(wù)器向客戶返回信息的過(guò)程中就出現(xiàn)問(wèn)題了,由于公鑰是公有的,任何人都可以拿到這份數(shù)據(jù)并使用公鑰解密,所以這里還是存在不安全因素。于是客戶和瀏覽器的通信過(guò)程多了一個(gè)步驟。
為了使瀏覽器和服務(wù)器發(fā)出的信息都無(wú)法被別人解密,這里使用了一個(gè)對(duì)稱加密算法,而算法和密鑰的加密是在瀏覽器用公鑰來(lái)加密的,這樣可以保證只有服務(wù)器才能用私鑰來(lái)解密這個(gè)內(nèi)容,也就是保證對(duì)稱加密算法和密鑰只能被服務(wù)器拿到。當(dāng)服務(wù)器拿到對(duì)稱加密算法和密鑰后,后面的通信都能使用這個(gè)對(duì)稱加密算法來(lái)完成,由于對(duì)稱加密算法和密鑰只有客戶和服務(wù)器知道,后面的通信加密過(guò)程都是無(wú)法被破解的。
到這里,基本就是HTTPS通信的整個(gè)過(guò)程了,似乎整個(gè)過(guò)程都很難被黑客破解,但是注意到前面的所有過(guò)程都默認(rèn)了一個(gè)前提,那就是客戶手里已經(jīng)擁有公鑰。公鑰的獲取如果只是在客戶和服務(wù)器之間進(jìn)行的話,是存在很大的安全隱患的,最直接的問(wèn)題就是用戶怎么確定拿到的公鑰就是目標(biāo)服務(wù)器的公鑰,類似“證明‘能證明你身份’的憑證是你的”這樣的命題,最好的解決辦法是引入一個(gè)大家都信任的第三方來(lái)“證明這個(gè)憑證”是服務(wù)器的,于是這里就使用了SSL證書(shū)。前面提到,通過(guò)發(fā)送SSL證書(shū)服務(wù)器可以將公鑰安全的交給用戶,而這里的第三方就是證書(shū)機(jī)構(gòu)。于是我們得到了一個(gè)完整的HTTPS通信過(guò)程。
到這里已經(jīng)基本講完了SSL證書(shū)與HTTPS的原理,當(dāng)然實(shí)際通信過(guò)程中還有很多細(xì)節(jié)沒(méi)有說(shuō)到,但是不妨礙理解原理。實(shí)際開(kāi)發(fā)和生產(chǎn)過(guò)程中很多信息敏感的操作都可以參照這種思想來(lái)實(shí)現(xiàn),文中有不合理的和錯(cuò)誤的地方歡迎指正。
看完上述內(nèi)容,你們掌握如何解析HTTPS與SSL原理的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站欄目:如何解析HTTPS與SSL原理
當(dāng)前網(wǎng)址:http://jinyejixie.com/article28/podhcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、商城網(wǎng)站、建站公司、App設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)