HTTP有什么不足:
通信使用明文,內容可能被竊聽
不驗證通信雙方的身份,可能遭遇偽裝(任何人都可以發起請求)
無法證明報文的完整性
SSL(Secure Scoket Layer 安全套接層)
怎么解決上面的問題呢?
http沒有加密機制,但可以和SSL或TLS(安全傳輸層協議)組合使用,加密http通信線路。用SSL建立安全通信線路之后,就可以在線路上進行通信了,組合后就被稱為HTTPS(超文本安全傳輸協議)。另外內容加密會在后面介紹。
SSL還提供了一種證書手段(值得信任的三方機構頒發),可以確定通信雙方。
SSL提供認證和加密處理及摘要功能。
綜上:HTTP+加密+認證+完整性保護=HTTPS,HTTPS是身披SSL外殼的HTTP。
另外SSL也是有缺點的,HTTPS比HTTP慢2-100倍,包括通信慢和大量消耗CPU和內存資源導致的處理速度變慢。
加密
共享密鑰加
即加密和解密使用相同的密鑰。也叫做對稱密鑰加密。密鑰的交換是個問題。因為無法確保密鑰安全的轉交給對方。
公開密鑰加密
SSL采用的是公開密鑰加密處理方式。公鑰+私鑰。
發送密文的一方使用對方的公鑰進行加密,對方收到加密信息后再使用私鑰進行解密。但是處理速度沒有共享密鑰加密快。
混合加密
HTTPS采用共享密鑰加密和公開密鑰加密并用的混合加密機制。發揮兩者的長處。在交換密鑰環節使用公開密鑰加密,之后的建立通信交換報文則使用共享密鑰加密。
數字證書認證機構CA
但是還是有問題,沒法證明公開密鑰本身就是貨真價實的公開密鑰。會不會在公開密鑰的傳輸過程中,真正的公開密鑰已經被攻擊者替換掉了。為了解決該問題,可以使用數字證書認證機構(CA)頒發的公開密鑰證書。這個公開密鑰一般在瀏覽器開發商發布版本時事先植入。
下面是使用CA的大致流程:
image.png