?HTTPS流程:
HTTPS核心:加了TLS層,加密傳輸+身份認證
TLS:信息加密、校驗機制、身份證書
????????TLS(Transport Layer Security)握手是建立安全通信通道的關鍵過程,發生在客戶端(如瀏覽器)和服務器之間。其主要目標是協商加密參數、驗證身份(通常是服務器)并生成共享密鑰,以實現后續通信的機密性和完整性。
1、Client Hello (客戶端問候):
- 客戶端向服務器發起連接。
- 發送支持的 TLS 版本列表。
- 發送一個客戶端生成的隨機數。
2、Server Hello (服務器問候):
- 服務器從客戶端支持的列表中選擇:
- 一個雙方都支持的?TLS 版本。
- 一個雙方都支持的密碼套件。
- 服務器生成一個隨機數并發送給客戶端。
3、服務器證書:
- 服務器發送其數字證書給客戶端。
- 該證書包含服務器的公鑰、身份信息(域名等),并由受信任的證書頒發機構簽名。
4、服務器密鑰交換:
- 此消息通常包含一個簽名(用服務器證書對應的私鑰生成),證明服務器擁有該證書的私鑰并控制了該公鑰。
5、服務器問候結束:
- 服務器表示其初始握手消息已發送完畢。
6、客戶端密鑰交換:
客戶端驗證服務器證書:
- 檢查證書是否由受信任的 CA 簽發且在有效期內。
- 檢查證書中的域名是否與正在訪問的域名匹配。
- 驗證證書鏈的完整性。
如果服務器發送了密鑰交換參數:
- 客戶端將這部分參數發送給服務器。
- 此時,客戶端和服務器都擁有了對方提供的密鑰交換參數和自己生成的私密參數。
7、客戶端完成:
- 客戶端計算并發送一個加密的完成消息。
- 這是客戶端首次發送的加密消息,用于驗證握手過程的完整性以及密鑰是否正確協商。
8、服務器完成:
- 服務器計算并發送一個加密的完成消息。
- 使用協商好的密鑰和算法進行加密。
- 客戶端驗證此消息。
客戶端和服務器現在可以開始使用協商好的對稱加密密鑰(主密鑰派生的會話密鑰)和算法安全地傳輸應用層數據(如 HTTP 請求和響應)。所有后續通信都被加密和完整性保護。
DNS傳輸流程:
Linux下:nslookup和dig
Windows下:nslookup
?
檢查本地DNS緩存:?操作系統首先查詢本機的DNS緩存記錄。如果找到該域名對應的IP地址,則解析完成。
檢查hosts文件:?若本地緩存未命中,則查詢操作系統的hosts文件(Linux通常位于
/etc/hosts
,Windows位于C:\Windows\System32\drivers\etc\hosts
)。如果該文件包含域名與IP的映射關系,則直接使用該IP地址完成解析。查詢本地DNS服務器:?若hosts文件也未提供解析,操作系統將查詢請求發送至網絡配置中指定的本地DNS服務器(通常由ISP或網絡管理員提供)。如果本地DNS服務器緩存中有此記錄,則返回結果,解析結束。
查詢根DNS服務器:?若本地DNS服務器無緩存記錄,它則向根DNS服務器發起查詢請求。
獲取頂級域名服務器地址:?根DNS服務器根據域名后綴(如
.com
,?.cn
,?.org
等)返回負責該頂級域名的頂級DNS服務器地址(全球根DNS服務器數量有限,約13組)。查詢頂級域名服務器:?本地DNS服務器隨后向接收到的頂級DNS服務器地址發送查詢請求。
獲取權威域名服務器地址:?頂級DNS服務器查找并返回負責該具體域名的權威域名服務器(Name Server)的地址。
查詢權威域名服務器:?本地DNS服務器接著向權威域名服務器發送查詢請求。
獲取解析結果并緩存:?權威域名服務器返回該域名最終的正確IP地址給本地DNS服務器。本地DNS服務器收到后,會緩存此域名與IP的映射關系,緩存時長由記錄的TTL(生存時間)值決定。
返回結果給客戶端并緩存:?本地DNS服務器將解析得到的IP地址返回給用戶計算機。用戶計算機同樣會根據記錄的TTL值,將該結果緩存在本地系統DNS緩存中。
建立連接訪問目標:?用戶計算機獲得目標網站(如百度)的IP地址后,需要與該IP地址對應的服務器建立TCP連接(三次握手)。握手成功后,才能發送訪問請求。目標服務器處理請求并返回響應后,用戶才能訪問該網站。