作者:圖靈天宜 ? 2019月12月23日
現代網站有很多種協議,如http,https等。每一種都有自身的特點。今天就給大家介紹其中的一種:https協議。https協議是ssl證書加上http協議構成的一種可以進行加密傳輸和身份認證的網絡協議。那https協議有哪些優點?
https協議是目前的網絡技術中具有安全性最高的網絡傳輸協議。https協議由ssl+http協議構成,也比http擁有更高的安全性。這個協議可以對用戶和服務器進行認證,以保證將數據發給正確的用戶。
并且,https協議還可以在傳輸中有效的防止數據遭到竊取和改變。
https協議對搜索引擎更加友好
https協議的網站在搜索引擎中更容易受到青睞,國內最大的搜索引擎百度對于https的站點進行了平臺支持、抓去支持、展現支持等等扶持手段。比如平臺支持,百度站長平臺可以完美支持https協議的網站進行驗證,并且為這些網站提供了相應的數據接口,這樣可以在第一時間對https網站進行接受。
http協議的優點
效率高
限制每個連接只有一個請求的無連接狀態,在服務器處理完客戶的請求,并收到客戶的反應,即斷開,通過這種方式可以節省傳輸時間。
簡單快速
當服務器客戶端請求服務時,只需傳送請求方法和路徑。請求方法常用的GET,HEAD,POST。每種方法規定了客戶端與服務器聯系的是不同的類型。因為簡單的 HTTP 協議,通信速度很快。
靈活
HTTP 允許任何類型的數據對象的傳輸,輸入被傳輸的內容類型進行標記。
無狀態
HTTP 協議是無狀態的協議,沒有一個國家是沒有協議的事務處理和存儲能力。如果該狀態是指由于缺乏必要前述信息的后續處理中,它必須被重傳,這可能導致在數據傳輸增加了每個連接。另一方面,當不需要在服務器上的快速響應的先驗信息。
https網站的評價相比更高
鑒于https協議的安全性更高,所以網站的評價也會相應的變高,這樣對于網站頁面的體驗也會更好。
Http協議的缺點
- 有被竊聽的風險,Http通信使用明文,傳輸過程中沒有任何的保證措施,可能會被竊聽
- 在傳輸過過程中,不驗證通信方的身份,這中間就有可能被遭遇偽裝
- Http只是對報文進行了解析,并沒有對其進行完整的校驗,所以無法驗證報文的完整形,可能被遭篡改
Https協議的特點
Https簡介
Https并不是一個嶄新的協議,而是在http的基礎上發展而來,意為http Secure.相當于是Http的升級版。它主要是為了解決http協議安全性不足的問題而誕生的。在使用https之后,訪問瀏覽器的時候前綴由http變為https,現在我們看到網站都采用https的協議比比皆是,比如:如下都是https的網站:
可見https已經深刻的滲入到我們的經常訪問的網站中了,而關于它,本篇博文就來探討一下http協議如何變為https.
Http+加密+認證+完整性保護=https
Https的通信端口由SSL和TSL代替了,它是一種應用層協議。一般的情況下http直接和Tcp進行通信,當使用了SSL之后,就會變成先和SSL通信,SSL再和Tcp進行通信,原理圖如下:
當采用了SSL協議之后,Http協議就具備了加密、證書、完整性保護三大功能,SSL是獨立于Http存在的,它是現存的廣泛使用的網絡安全技術。
三:Https協議采用的加密技術
SSL采用的加密技術
SSL采用的加密技術叫做“共享密鑰加密”,也叫作“對稱密鑰加密”,這種加密方法是這樣的,比如客戶端向服務器發送一條信息,首先客戶端會采用已知的算法對信息進行加密,比如MD5或者Base64加密,接收端對加密的信息進行解密的時候需要用到密鑰,中間會傳遞密鑰,(加密和解密的密鑰是同一個),密鑰在傳輸中間是被加密的。這種方式看起來安全,但是仍有潛在的危險,一旦被竊聽,或者信息被挾持,就有可能破解密鑰,而破解其中的信息。因此“共享密鑰加密”這種方式存在安全隱患:
3.3.2:非對稱密鑰加密
“非對稱加密”使用的時候有兩把鎖,一把叫做“私有密鑰”,一把是“公開密鑰”,使用非對象加密的加密方式的時候,服務器首先告訴客戶端按照自己給定的公開密鑰進行加密處理,客戶端按照公開密鑰加密以后,服務器接受到信息再通過自己的私有密鑰進行解密,這樣做的好處就是解密的鑰匙根本就不會進行傳輸,因此也就避免了被挾持的風險。就算公開密鑰被竊聽者拿到了,它也很難進行解密,因為解密過程是對離散對數求值,這可不是輕而易舉就能做到的事。以下是非對稱加密的原理圖:
四:Https的安全通信機制
Https采用混合機制的加密方式
https則綜合了公開密鑰加密和共享密鑰加密的兩種方式,充分利用兩者的優勢,在最初的連接的時候使用非對稱密鑰的加密方式保證連接的安全性,之后穩定的通訊采用對稱加密的方式,穩定的通訊是指確保交換的密鑰是安全的。
非稱加密方式的缺點
公開密鑰加密固然比共享密鑰加密的方式提升了一個檔次,但是它也存在兩個問題:
第一個是:如何保證接收端向發送端發出公開秘鑰的時候,發送端確保收到的是預先要發送的,而不會被挾持。只要是發送密鑰,就有可能有被挾持的風險。
第二個是:非對稱加密的方式效率比較低,它處理起來更為復雜,通信過程中使用就有一定的效率問題而影響通信速度
https的證書機制
在上面中我們講了非對稱加密的缺點,其中第一個就是公鑰很可能存在被挾持的情況,無法保證客戶端收到的公開密鑰就是服務器發行的公開密鑰。此時就引出了公開密鑰證書機制。數字證書認證機構是客戶端與服務器都可信賴的第三方機構。證書的具體傳播過程如下:
1:服務器的開發者攜帶公開密鑰,向數字證書認證機構提出公開密鑰的申請,數字證書認證機構在認清申請者的身份,審核通過以后,會對開發者申請的公開密鑰做數字簽名,然后分配這個已簽名的公開密鑰,并將密鑰放在證書里面,綁定在一起
2:服務器將這份數字證書發送給客戶端,因為客戶端也認可證書機構,客戶端可以通過數字證書中的數字簽名來驗證公鑰的真偽,來確保服務器傳過來的公開密鑰是真實的。一般情況下,證書的數字簽名是很難被偽造的,這取決于認證機構的公信力。一旦確認信息無誤之后,客戶端就會通過公鑰對報文進行加密發送,服務器接收到以后用自己的私鑰進行解密。
關于客戶端證書
客戶端證書是進行客戶端認證的,證明服務器正在通信的客戶端是安全的。但是使用客戶端證書使用存在以下幾個問題:
1:使用客戶端證書,客戶得自己安裝證書,客戶端證書是需要進行付費購買的,且每張證書對應到用戶意味著需要支付用戶數量對等的費用,這叫給用戶帶來了間接的問題。
2:客戶端證書存在另一個問題是,客戶端證書只能證明客戶端的存在,而不能證明用戶本人的真實有效。
五:為什么還有很多網站不使用Https?
Https既然如此安全可靠,為什么還有很多WEB網站不使用Https的協議?
這其中的原因有以下幾點:
加密通信會消耗一定的cpu和服務器資源,如果每次通信都加密,就會消耗更多的資源
如果所有的信息都采用https加密,這無疑是一種浪費。非敏感信息就算被竊取了,也無傷大雅??梢栽谄鋫鬏斆舾行畔⒌臅r候,采用https協議進行加密
購買證書的開銷也是一筆很大的費用。向認證機構購買證書,證書價格會根據不同的認證機構略有不同,而一般的授權需要折合人民幣600多元。
六:總結
在本片中http協議出發,主要介紹了https協議,并對其加密機制進行了簡介,梳理其優缺點及其使用場景。作為一名java開發者,應該對https有所了解,明白其背后的機制,不用深究其細節,此乃本篇博文的初衷。
所以,綜合考慮之下,對于https協議的升級還是十分合適且必要的。https協議在數據安全和搜索引擎優化方面都會給網站提供很多正面的幫助。
當然,https協議雖好,但如果想要進行http協議的改造的話,還要注意一些問題。
ssl證書需要一些額外的開支
天下沒有免費的午餐,對于功能強大的ssl證書來說,當然也是如此。作為https協議的重要組成部分,ssl證書中是有一部分功能十分強大的證書需要一定的費用。而具體的數額也是根據ssl證書的功能決定的,功能越強,費用也就越高。當然,ssl證書也有一些可以免費使用的,但是比起付費證書,就會缺少很多強大的功能。
https的安裝需要一定的技術支持
https協議的安裝還是需要一些專業技術的,申請好的ssl證書是一個壓縮文件,這就需要懂得相關知識的專業人員進行安裝,如果想要對http協議進行改造而又不會的話,就千萬不要亂動,如果想要嘗試的話最好提前備份網站。