HTTPS協議
一.為什么需要https
1.HTTP是明文傳輸的,也就意味着,介於發送端、接收端中間的任意節點都可以知道你們傳輸的內容是什么。這些節點可能是路由器、代理等。
舉個最常見的例子,用戶登陸。用戶輸入賬號,密碼,采用HTTP的話,只要在代理服務器上做點手腳就可以拿到你的密碼了。
用戶登陸 --> 代理服務器(做手腳)--> 實際授權服務器
2.在發送端對密碼進行加密?沒用的,雖然別人不知道你原始密碼是多少,但能夠拿到加密后的賬號密碼,照樣能登陸。(這也是很多人覺得前端加密並沒有啥軟用)
二.HTTPS是如何保障安全的
稍微了解網絡基礎的同學都知道,HTTP是應用層協議,位於HTTP協議之下是傳輸協議TCP。TCP負責傳輸,HTTP則定義了數據如何進行包裝。

從上面圖中我們可以看出:HTTPS相對於HTTP有哪些不同呢?其實就是在HTTP跟TCP中間加多了一層加密層TLS/SSL。
神馬是TLS/SSL?
通俗的講,TLS、SSL其實是類似的東西,SSL中文叫做“安全套接層”,SSL是個加密套件,負責對HTTP的數據進行加密。TLS是SSL的升級版。現在提到HTTPS,加密套件基本指的是TLS。
傳輸加密的流程
原先是應用層將數據直接給到TCP進行傳輸,現在改成應用層將數據給到TLS/SSL,將數據加密后,再給到TCP進行傳輸。
就是這么回事。將數據加密后再傳輸,而不是任由數據在復雜而又充滿危險的網絡上明文裸奔,在很大程度上確保了數據的安全。這樣的話,即使數據被中間節點截獲,壞人也看不懂。
三.HTTPS是如何加密數據的
一般來說,加密分為對稱加密、非對稱加密(也叫公開密鑰加密)。
對稱加密的意思就是,加密數據用的密鑰,跟解密數據用的密鑰是一樣的。
對稱內容加密強度非常高,一般破解不了。但存在一個很大的問題就是無法安全地生成和保管密鑰。假如客戶端軟件和服務器之間每次會話都使用固定的,相同的密鑰加密和解密,肯定存在很大的安全隱患。如果
有人從客戶端端獲取到了對稱密鑰,整個內容就不存在安全性了,而且管理海量的客戶端密鑰也是一件很復雜的事情。
非對稱加密的意思就是,加密數據用的密鑰(公鑰),跟解密數據用的密鑰(私鑰)是不一樣的。
什么叫做公鑰呢?其實就是字面上的意思——公開的密鑰,誰都可以查到。因此非對稱加密也叫做公開密鑰加密。
相對應的,私鑰就是非公開的密鑰,一般是由網站的管理員持有。
公鑰、私鑰兩個有什么聯系呢?
簡單的說就是,通過公鑰加密的數據,只能通過私鑰解開。通過私鑰加密的數據,只能通過公鑰解開。
很多同學都知道用私鑰能解開公鑰加密的數據,但忽略了一點,私鑰加密的數據,同樣可以用公鑰解密出來。而這點對於理解HTTPS的整套加密、授權體系非常關鍵。
非對稱密鑰交換很安全,但同時也是 HTTPS 性能和速度降低的“罪魁禍首”。
想的太多,做的太少,中間的落差就是煩惱,要么去做,要么別想 中尉【4】
