HTTP的不足
通信使用明文(不加密),內(nèi)容可能會(huì)被竊聽
不驗(yàn)證通信方的身份,因此有可能遭遇偽裝
無法證明報(bào)文的完整性,所以有可能已遭篡改
HTTPS介紹
HTTP 協(xié)議中沒有加密機(jī)制,但可以通 過和 SSL(Secure Socket Layer, 安全套接層 )或 TLS(Transport Layer Security, 安全層傳輸協(xié)議)的組合使用,加密 HTTP 的通信內(nèi)容。屬于通信加密味滞,即在整個(gè)通信線路中加密煎源。
HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS(HTTP Secure )
HTTPS 采用共享密鑰加密(對(duì)稱)和公開密鑰加密(非對(duì)稱)兩者并用的混合加密機(jī)制贱鼻。若密鑰能夠?qū)崿F(xiàn)安全交換,那么有可能會(huì)考慮僅使用公開密鑰加密來通信殿衰。但是公開密鑰加密與共享密鑰加密相比,其處理速度要慢坪创。
所以應(yīng)充分利用兩者各自的優(yōu)勢(shì), 將多種方法組合起來用于通信承绸。 在交換密鑰階段使用公開密鑰加密方式,之后的建立通信交換報(bào)文階段 則使用共享密鑰加密方式枯怖。
服務(wù)器獲得瀏覽器公鑰
網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器萍桌。證書里面包含了網(wǎng)站地址宵溅,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息梗夸。
瀏覽器獲得服務(wù)器公鑰
獲得網(wǎng)站證書之后瀏覽器要做以下工作:
(a). 驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法层玲,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等),如果證書受信任反症,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭辛块,否則會(huì)給出證書不受信的提示。
(b). 如果證書受信任铅碍,或者是用戶接受了不受信的證書润绵,瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼(接下來通信的密鑰),并用證書中提供的公鑰加密(共享密鑰加密)胞谈。
(c) 使用約定好的HASH計(jì)算握手消息尘盼,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站烦绳。
瀏覽器驗(yàn)證 -> 隨機(jī)密碼
服務(wù)器的公鑰加密 -> 通信的密鑰
通信的密鑰 -> 服務(wù)器
網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:
(a). 使用自己的私鑰將信息解密取出密碼卿捎,使用密碼解密瀏覽器發(fā)來的握手消息,并驗(yàn)證HASH是否與瀏覽器發(fā)來的一致径密。
(b). 使用密碼加密一段握手消息午阵,發(fā)送給瀏覽器。
服務(wù)器用自己的私鑰解出隨機(jī)密碼 -> 用密碼解密握手消息(共享密鑰通信)-> 驗(yàn)證HASH與瀏覽器是否一致(驗(yàn)證瀏覽器)
HTTPS的不足
加密解密過程復(fù)雜享扔,導(dǎo)致訪問速度慢
加密需要認(rèn)向證機(jī)構(gòu)付費(fèi)
整個(gè)頁面的請(qǐng)求都要使用HTTPS