2021-03-04 分類(lèi): 網(wǎng)站建設(shè)
HTTPS全稱(chēng)為Hypertext Transfer Protocol over Secure Socket Layer,中文含義為“超文本傳輸協(xié)議在安全加密字層”,簡(jiǎn)單來(lái)說(shuō)就是加密數(shù)據(jù)傳輸,通俗的說(shuō)就是安全連接。
HTTPS安全超文本傳輸協(xié)議,它是一個(gè)安全通信通道,它基于HTTP開(kāi)發(fā),用于在客戶(hù)計(jì)算機(jī)和服務(wù)器之間交換信息。它使用安全套接字層(SSL)進(jìn)行信息交換,簡(jiǎn)單來(lái)說(shuō)它是HTTP的安全版。
https相比與http多了安全支持最關(guān)鍵的步驟就是建立server和client的SSL安全連接通道。
客戶(hù)端對(duì)https的支持方案:
這里主要描述流程和邏輯,以及這樣做的目的。我們可以看到整個(gè)過(guò)程分為四個(gè)階段:
1,client建立TCP連接后,發(fā)送一個(gè)標(biāo)志請(qǐng)求,雙方交換一些與加密相關(guān)的信息。這個(gè)過(guò)程主要是為了協(xié)商加密算法。
2,server會(huì)緊接著將自己的證書(shū)發(fā)送給client,來(lái)完成client對(duì)server身份的認(rèn)證。這里的證書(shū)可以理解為一種網(wǎng)絡(luò)身份證,即由一些有資質(zhì)的CA機(jī)構(gòu)(如VeriSign)經(jīng)過(guò)核實(shí)后頒發(fā)的證明文件,因此如果想讓server支持https是需要花錢(qián)買(mǎi)數(shù)字證書(shū)的,同時(shí)windows等操作系統(tǒng)也已經(jīng)提供了一套API來(lái)完成對(duì)證書(shū)合法性的檢查(類(lèi)似于去公安部分查證某人的身份)。
對(duì)于這一步,瀏覽器的標(biāo)準(zhǔn)做法是維護(hù)一個(gè)CA機(jī)構(gòu)的列表(該列表用戶(hù)可以干預(yù)),當(dāng)驗(yàn)證證書(shū)時(shí),如果是列表中的機(jī)構(gòu)(或經(jīng)其授權(quán)的機(jī)構(gòu),證書(shū)鏈)頒發(fā)的就為可信任證書(shū)。然后還會(huì)驗(yàn)證證書(shū)有效期、證書(shū)標(biāo)明的域名和目前訪(fǎng)問(wèn)的域名是否一致、證書(shū)中的公鑰能否解開(kāi)證書(shū)數(shù)字簽名等。對(duì)于其他應(yīng)用客戶(hù)端,由于已經(jīng)明確知道server證書(shū)的域名等信息,因此可以將認(rèn)證邏輯做的更加嚴(yán)格。如果客戶(hù)端發(fā)現(xiàn)server認(rèn)證失敗,就斷開(kāi)連接。這樣,就可以防止有人偽造server來(lái)騙取客戶(hù)端連接和https請(qǐng)求,從而將https解密盜用接口。
需要明確的一個(gè)概念是,SSL的認(rèn)證和加密之間沒(méi)有必然聯(lián)系,也就是說(shuō)如果client不做認(rèn)證,后續(xù)依然可以繼續(xù)標(biāo)準(zhǔn)的SSL加密,和server進(jìn)行https通信??梢赃@樣理解,SSL將身份認(rèn)證步驟獨(dú)立出來(lái),如果雙方繼續(xù)連接和握手過(guò)程,那么可以繼續(xù)協(xié)商數(shù)據(jù)加密算法,完成后續(xù)的通信。此時(shí)對(duì)于通信雙方來(lái)說(shuō),這次的數(shù)據(jù)通道和數(shù)據(jù)本身都是安全的,不會(huì)別第三者截取和解密。但是如果和你打電話(huà)的人不是你要的,雖然你說(shuō)的是暗語(yǔ),對(duì)方也能聽(tīng)懂,因?yàn)殡娫?huà)一開(kāi)始你們倆就從一系列標(biāo)準(zhǔn)暗語(yǔ)里協(xié)商了一個(gè)來(lái)用,暗語(yǔ)只是用來(lái)防止第三者竊聽(tīng)。
3,如果server要求,client需要發(fā)送自己的證書(shū),server完成對(duì)client端身份的認(rèn)證。目的與第2步類(lèi)似,但是一般很多server并不要求對(duì)client身份進(jìn)行認(rèn)證。
4,協(xié)商最終加密算法。client用服務(wù)器證書(shū)中的公鑰加密一個(gè)隨機(jī)串密碼(pre-mastersecret),并將一個(gè)由之前協(xié)商算法計(jì)算而來(lái)的握手消息用pre-mastersecret加密,將這些一并發(fā)給server;server收到后,用對(duì)應(yīng)的私鑰解密pre-mastersecret,由于密鑰只有server知道,因此其他人無(wú)法得到pre-mastersecret。server使用pre-mastersecret解密握手消息,并驗(yàn)證是否符合之前的協(xié)商規(guī)則。server和client通過(guò)相同的算法生成一個(gè)mastersecret,此后server和client之間用mastersecret作為初始密鑰進(jìn)行對(duì)稱(chēng)加解密通信。可以看出,雙方先通過(guò)非對(duì)稱(chēng)加密方式生成對(duì)稱(chēng)加密所用的密鑰,然后用該密鑰進(jìn)行對(duì)稱(chēng)加密通信。關(guān)于對(duì)稱(chēng)加密/非對(duì)稱(chēng)加密/公鑰/密鑰等概念,請(qǐng)自行g(shù)oogle。
需要說(shuō)明的是,上面四個(gè)階段是從邏輯上區(qū)分的,實(shí)際SSL協(xié)商時(shí)client和server之間的數(shù)據(jù)交互可能有所穿插和合并。通過(guò)以上建立起的SSL,保證了通信雙方、通道和數(shù)據(jù)的安全性,后續(xù)的通信過(guò)程也足夠安全。
三、客戶(hù)端實(shí)現(xiàn)https方式
實(shí)際上很多瀏覽器、郵箱等已經(jīng)是支持https的客戶(hù)端了。如果我們?cè)陂_(kāi)發(fā)過(guò)程中有客戶(hù)端對(duì)https的支持需求,可以按照標(biāo)準(zhǔn)的https/ssl協(xié)議來(lái)實(shí)現(xiàn),但是難度還是相當(dāng)大的。幸好已經(jīng)有開(kāi)源的應(yīng)用那就是libcurl 和 openssl。openssl封裝了ssl標(biāo)準(zhǔn),而libcurl也提供了對(duì)openssl的支持。從目前的實(shí)際情況看,主流瀏覽器都預(yù)埋了對(duì)ssl證書(shū)的支持,支持https訪(fǎng)問(wèn),同時(shí)能給訪(fǎng)客以更高層級(jí)的安全保障。
網(wǎng)站標(biāo)題:HTTPS和HTTP有什么區(qū)別?
本文網(wǎng)址:http://www.rwnh.cn/news/104161.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、企業(yè)網(wǎng)站制作、App設(shè)計(jì)、云服務(wù)器、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容