很高興回答這個問題。
HTTPS有什么用?和HTTP有什么區別?
最近一直在做安全方面的開發,我來回答下。
HTTPS是使用了安全技術的HTTP協議。
HTTP的全稱是超文本傳輸協議(HyperText Transfer Protocol)。HTTPS則是以安全為目標的HTTP通道(HyperText Transfer Protocol Over SecureSocket Layer)。它們的區別就在于一個網絡傳輸是非安全的,另一個網絡傳輸是安全的。
為什么要使用HTTPS?
普通的HTTP協議采用明文傳輸,傳送的消息容易泄漏及被篡改,也無法驗證消息的可靠性和完整性。比如說向服務器傳輸的數據中攜帶了自己的銀行賬戶和密碼,使用明文的話,第三方只要攔截傳輸過程中的數據包,賬戶和明文就很容易被別人竊取。又或者服務器給你回了一個指令,被人從中攔截,篡改為他的內容,你的客戶端接收到時,就會按照篡改后的內容執行,非常不安全。再就是服務器給客戶端發了條消息,因為網絡原因,數據丟了一半內容,客戶端又如何知道這個情況呢。
HTTPS如何實現數據的安全傳輸的。
先簡單介紹幾個概念。
- 密鑰
密鑰是把明文轉換為密文或者將密文轉換為明文的算法中輸入的參數。它分為兩部分,公鑰和私鑰。有了私鑰能推導出公鑰,反過來則不行??梢院唵卫斫鉃殍€匙和鎖頭的關系,即有了鑰匙能配出鎖頭來,但有鎖頭想配出鑰匙來則很難。
- 證書
證書是公鑰的載體,里面除了公鑰外,還有證書有效期,頒發者信息等其它內容。
- 摘要
摘要就是其字面上的意思,對一段內容進行簡略抽象。
- 加解密
加密就是把一段內容使用公鑰,轉換為另一種無法識別的內容,解密就是使用私鑰把加了密的內容還原成原始的內容。
- 簽名驗簽
簽名可以理解為另一種形式的加密,它使用私鑰把原始內容轉換為無法識別的內容,驗簽則是拿著原始內容以及簽名內容,使用公鑰驗證它們是否一致。
下面再說下安全處理過程。
- 給消息生成摘要后,對摘要做簽名,使得客戶端能驗證消息來源的可靠性和完整性。
服務器在給客戶端的消息前,會先給消息生成摘要,再用自己的私鑰給摘要做簽名,最后再把簽名和私鑰對應的證書一起附在消息最后,發給客戶端。客戶端收到消息后,先驗證證書的有效性,如果證書無效,直接pass以確保消息的可靠性。然后對消息做摘要,再拿證書里的公鑰結合摘要驗證簽名是否有效,這樣即使消息被篡改或者破壞了了,因為生成的摘要不同,簽名也就不一樣,可以確保消息的完整性以及未被篡改。
- 通過對消息加密,避免消息內容被他人解讀。
服務器和客戶端在傳輸消息前,會先交換雙方的密鑰,然后傳輸過程都是一方用密鑰對消息加密,另一方用密鑰對消息解密。而第三方即使攔截了數據包,也會因為沒有密鑰而無法解讀消息,避免其中的具體內容泄漏。
總之,相比較HTTP協議,雖然HTTPS的處理邏輯要復雜得多,但在互聯網安全日益重要的今天,它已經成為了一個最常用的網絡傳輸協議。
以上就是HTTP和HTTPS的一些概念性介紹,更復雜和詳細的實現原理這里就不展開了,希望對你有幫助,謝謝。