說明:
看部落格的過程中做的思維導圖,截圖貼在這裡.僅是個筆記和摘要,不能算真正的文章.
證書的分類
按適用的域名數量
按認證等級
按簽發主題
這裡涉及到證書鏈的概念.這也是我們後續程式設計處理需要理解的一個概念
證書鏈
證書的驗證流程
證書鏈的一些例子
百度的
12306
let`s encrypted
可以看到,根證書的有效期是近20年.而let`s encrypted自己的證書有效期是3年.
不同型別的證書,瀏覽器不同的安全標識
匯出證書
(以匯出let`s encrypted網站的證書的根證書DST Root CA X3為例)
證書的選擇
以上的都是講證書,下面看看https通訊原理
原理
基本原理
一次通訊過程(改進後的tls)
第一次握手
第二次握手
後續真正資料的傳輸
安全性和演算法改進
相關演算法
在安卓客戶端的使用(retrofit/okhttp中)
https的抓包
抓包工具的原理:
原理就是請求/響應的攔截和轉發.
那麼,要在攔截https,獲取到裡面的內容,就應該做到:
對於客戶端,抓包工具就是伺服器,https前兩次握手要通過抓包工具提供的證書完成.通過偽裝成伺服器,拿到真正的解密後的請求內容.
對於伺服器,抓包工具就是客戶端,這裡通訊的前兩次握手是利用伺服器下發的證書完成的.這個過程相信抓包工具內部已經處理好了.
現在問題是,抓包工具提供的證書一般都是不在系統根證書列表中,所以我們需要做的是,將抓包工具提供的證書安裝到我們的手機/模擬器/作業系統,這樣https第一次握手就可以通過,然後所有請求就可以經抓包工具顯示並轉發了.
怎麼拿到抓包工具的證書?
很簡單,去訪問抓包工具的伺服器:
比如fiddler:
下載後放到手機裡,在"設定-安全-安裝憑據"裡安裝就行了.
當然,fiddler要用https抓包還有開啟它的https抓包功能:
那個下拉框可以選擇 抓所有程式/只抓瀏覽器/只抓遠端端(手機).
參考/學習資料
圖解SSL/TLS協議
SSL/TLS協議執行機制的概述
Retrofit中如何正確的使用https?
HTTPS理論基礎及其在Android中的最佳實踐