注意⚠️
https協(xié)議需要到ca申請證書,一般免費證書很少,需要交費。
http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443
HTTP的缺點
HTTP主要有這些不足:
通信使用明文,內(nèi)容可能被竊聽
![](/d/20211019/5fa0f9e030d3098fab68e5a44bfb0b92.gif)
不驗證通信方身份,因此有可能遭遇偽裝
![](/d/20211019/ac0b786d8f6b8192cf0ec31ca0d8983a.gif)
無法驗證報文的完整性,所有有可能已篡改
![](/d/20211019/73865f7f5e55de937ae390378ba7aec2.gif)
HTTP + 加密 + 認證 + 完整性保護 = HTTPS
![](/d/20211019/d5d3117c5202e173d34e47773e3fe28d.gif)
HTTPS是身披SSL外殼的HTTP
通常情況下HTTP是直接和TCP層進行通信的。當使用SSL(安全套階字)時,則演變成HTTP先和SSL通信,SSL再和TCP通信的了。
![](/d/20211019/d5901f66944ea055b7e05600c5fdd598.gif)
加密技術
講解SSL前,科普一下加密方法,SSL采用的是一種叫做公開密鑰加密的加密處理方式
對稱加密
加密和解密用的一個密鑰的方式稱為對稱加密,也叫做共享密鑰加密
![](/d/20211019/63e9fc03571e918cf98aa5129ab4be8f.gif)
對稱加密在發(fā)送加密信息時也需要將密鑰發(fā)送給對方,但這樣可以被攻擊者截取,就不安全啦~
![](/d/20211019/ff0d1a7da7dc4e085c10394ec5729499.gif)
非對稱加密
非對稱加密又稱作公開密鑰加密,它很好的解決了對稱加密密鑰被截取的問題。
非對稱加密采用一對非對稱的密鑰,一把叫做私有密鑰,一把叫做共有密鑰。
使用非對稱加密,發(fā)送密文一方使用對方的共有密鑰進行加密處理,對方收到加密信息后,再使用自己的私有密鑰進行解密。
![](/d/20211019/f6463f603de9629ec03de482a194c37e.gif)
HTTPS采用混合加密機制
HTTPS采用對稱加密和非對稱加密所混合的加密機制。
若密鑰能安全交換,那么有可能僅考慮非對稱加密。
但是非對稱加密與對稱加密相比,處理速度相對較慢。
![](/d/20211019/7200742813a50044e019f085ab6dd88e.gif)
公開密鑰的認證
使用數(shù)字證書認證機構和其頒布的公開密鑰證書進行認證。即讓第三方獨立機構進行驗證。
![](/d/20211019/68177ec49f29a9698d30b26189b3e599.gif)
![](/d/20211019/de3a0af35ddad70f8c1264fe4bfb18b9.gif)
私有密鑰是保存在服務器端的~
注意⚠️:認證是要錢的!!!
HTTPS安全通信機制
![](/d/20211019/007ad52254807f9c4cd0105c3ee73236.gif)
下圖是完整的HTTPS的通信過程
![](/d/20211019/acd25384b42ee22bc0e63fc103948aa0.gif)
為什么HTTPS不是那么普及
1.加密通信與純文本通信相比,消耗更多的CPU和內(nèi)存資源
2.購買證書是要錢的!
3.少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書.
這里客戶端證書,其實就類似表示個人信息的時候,除了用戶名/密碼, 還有一個CA 認證過的身份. 應為個人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認自己的身份
目前少數(shù)個人銀行的專業(yè)版是這種做法,具體證書可能是拿U盤作為一個備份的載體
HTTPS 一定是繁瑣的
1.本來簡單的http協(xié)議,一個get一個response. 由于https 要還密鑰和確認加密算法的需要.單握手就需要6/7 個往返,任何應用中,過多的round trip 肯定影響性能.
2.接下來才是具體的http協(xié)議,每一次響應或者請求, 都要求客戶端和服務端對會話的內(nèi)容做加密/解密,盡管對稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL 芯片. 如果CPU 信能比較低的話,肯定會降低性能,從而不能serve 更多的請求,加密后數(shù)據(jù)量的影響. 所以,才會出現(xiàn)那么多的安全認證提示
網(wǎng)站使用https的好處與壞處
今天我們重點討論一下網(wǎng)站使用https的好處與壞處,如果有對https原理不了解的小伙伴,可以參考百恒之前寫的http和https的關系與區(qū)別(附圖解)。
https的好處
1、SEO方面
谷歌曾在2014年8月份調(diào)整搜索引擎算法,并稱“比起同等http網(wǎng)站,采用https加密的網(wǎng)站在搜索結果中的排名將會更高。”
百度也于去年也在站長平臺聲明,https有一定的排名優(yōu)待。
2、安全性
盡管https并非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的公司,但https仍是現(xiàn)行架構下最安全的解決方案,主要有以下幾個好處:
(1)、使用https協(xié)議可認證用戶和服務器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務器;
(2)、https協(xié)議是由SSL+http協(xié)議構建的可進行加密傳輸、身份認證的網(wǎng)絡協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性。
(3)、https是現(xiàn)行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
https的壞處
雖然說https有很大的優(yōu)勢,但其相對來說,還是有些不足之處,具體來說,有以下2點:
1、SEO方面
據(jù)ACM CoNEXT數(shù)據(jù)顯示,使用https協(xié)議會使頁面的加載時間延長近50%,增加10%到20%的耗電,此外,https協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗,甚至已有安全措施也會受到影響也會因此而受到影響。
而https協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方案幾乎起不到什么作用。
最關鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
2、經(jīng)濟方面
(1)、SSL證書需要去,功能越強大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用。
(2)、SSL證書通常需要綁定IP,不能再同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗(SSL有擴展可以部分解決這個問題,但是比較麻煩,而且要求瀏覽器、操作系統(tǒng)支持,Windows XP就不支持這個擴展,考慮到XP的裝機量,這個特性幾乎沒用)。
(3)、https連接緩存不如http高效,大流量網(wǎng)站如非必要也不會采用,流量成本太高。
(4)、https連接服務器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本,如果全部采用https,基于大部分計算資源閑置的假設的VPS的平均成本會上去。
(5)、https協(xié)議握手階段比較費時,對網(wǎng)站的響應速度有負面影響,如非必要,沒有理由犧牲用戶體驗。
當然了,現(xiàn)在https已經(jīng)趨于成熟,很多缺點是可以優(yōu)化和彌補的。比如:打開速度問題完全可以通過CDN加速解決,很多IDC也在著手推出免費證書和一站式https搭建服務,不久https成本將會大大縮小!