本文為博主原創,未經允許不得轉載:

使用對稱密鑰的好處是解密的效率比較快,使用非對稱密鑰的好處是可以使得傳輸的內容不能被破解,因為就算你攔截到了數據,
但是沒有對應的私鑰,也是不能破解內容的。就比如說你搶到了一個保險櫃,但是沒有保險櫃的鑰匙也不能打開保險櫃。
那我們就將對稱加密與非對稱加密結合起來,充分利用兩者各自的優勢,在交換密鑰環節使用非對稱加密方式,之后的建立通信交換報文階段則使用對稱加密方式。
具體做法是:發送密文的一方使用對方的公鑰進行加密處理“對稱的密鑰”,然后對方用自己的私鑰解密拿到“對稱的密鑰”,
這樣可以確保交換的密鑰是安全的前提下,使用對稱加密方式進行通信。所以,HTTPS采用對稱加密和非對稱加密兩者並用的混合加密機制。
常用算法
-
非對稱加密算法:RSA,DSA/DSS
-
對稱加密算法:AES,RC4,3DES
-
HASH算法:MD5,SHA1,SHA256
https流程圖如下:

-
-
服務端必須要有一套數字證書,可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面,這套證書其實就是一對公鑰和私鑰。
-
傳送證書 這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間、服務端的公鑰,第三方證書認證機構(CA)的簽名,服務端的域名信息等內容。
-
客戶端解析證書 這部分工作是由客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨機值(密鑰)。然后用證書對該隨機值進行加密。
-
傳送加密信息 這部分傳送的是用證書加密后的密鑰(隨機值),目的就是讓服務端得到這個密鑰(隨機值),以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。
-
服務端加密信息 服務端用私鑰解密,得到了客戶端傳過來的密鑰(隨機值),然后把內容通過該值進行對稱加密。
-
傳輸加密后的信息 這部分信息是服務端用密鑰(隨機值)對稱加密后的信息,可以在客戶端被還原。
-
客戶端解密信息
https 請求的過程中,還可以使用hash算法或簽名算法
-
-
http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
-
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
-
http的連接很簡單,是無狀態的 。
-
CA(Certificate Authority)機構 為證書頒發機構,其頒布的均為首認證可信的證書,在使用過程中瀏覽器不會彈出不可信錯誤。
SSL證書可以向CA機構通過付費的方式申請,也可以自己制作。 CA機構頒發的證書價格非常昂貴,而且有效期一般只有一年到三年不等(年數不同,價格也不同),
過期之后還要再次交錢申請,因此一般只有企業才會申請證書。
證書中主要包含:
-
證書頒發機構:用於尋找鏈中的下一個驗證節點
-
證書的有效期:比如瀏覽器要根據這個值來判斷證書是否已過期
-
證書申請信息:比如瀏覽器要判斷改證書是否可用於當前訪問的域名
-
公鑰:用於后續和服務端通信的秘鑰,這個公鑰和當初生成 CSR 時的公鑰是一個東西,因為只有它是和服務器的私鑰是一對的
-
簽名:用於驗證證書內容沒有被篡改
通過這種方式可以查看域名對應的證書的版本,簽名算法,有效期,頒發者,使用者等等。
csdn 博客用的證書如上,其中DigiCert為頂端根證書,GeoTrust CN RSA CA G1為中間證書, *.csdn.net 為服務器證書,
當你點擊對應的證書,會顯示頒發者之間的關系,這種關系便形成證書鏈。如下圖所示:
在證書鏈中,通常分三級結構,根證書,中間證書和服務器實體證書,正確的證書鏈順序中服務器實體證書處在最底端,里面包含了些服務器域名,
服務器公鑰和簽名值等。服務器證書上一級是中間證書,中間證書就是上面提到的由權威CA機構授權的二級機構,可以由它來簽發服務器證書。
中間證書可以是由多張證書組合在一起,最上級的是根證書,也就是CA機構,對服務器身份進行校驗時,需要驗證一整個證書鏈,
由於瀏覽器中集成了權威CA機構的根證書,因此主要是校驗中間證書和服務器實體證書的簽名值是否正確。
校驗服務器身份需要驗證整個證書鏈,從服務器實體證書開始,服務器實體證書的簽發者是上一級中間證書的使用者,中間證書的簽發者是上一級根證書的使用者。
每一級證書都有簽名值,根證書使用自己的根CA公鑰驗證自己的簽名,也用來驗證中間證書的簽名值,中間證書的公鑰用來驗證下一級的服務器實體證書簽名值,以此構成一條信任鏈。