https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

水牛發表於2019-02-25

說明:
看部落格的過程中做的思維導圖,截圖貼在這裡.僅是個筆記和摘要,不能算真正的文章.

證書的分類

按適用的域名數量

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

按認證等級

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

按簽發主題

這裡涉及到證書鏈的概念.這也是我們後續程式設計處理需要理解的一個概念

證書鏈

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

證書的驗證流程

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

證書鏈的一些例子

百度的

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

12306

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

let`s encrypted

可以看到,根證書的有效期是近20年.而let`s encrypted自己的證書有效期是3年.

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

不同型別的證書,瀏覽器不同的安全標識

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

匯出證書

(以匯出let`s encrypted網站的證書的根證書DST Root CA X3為例)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

證書的選擇

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

以上的都是講證書,下面看看https通訊原理

原理

基本原理

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

一次通訊過程(改進後的tls)

第一次握手

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

第二次握手

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

後續真正資料的傳輸

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

安全性和演算法改進

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

相關演算法

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

在安卓客戶端的使用(retrofit/okhttp中)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

https的抓包

抓包工具的原理:

原理就是請求/響應的攔截和轉發.
那麼,要在攔截https,獲取到裡面的內容,就應該做到:
對於客戶端,抓包工具就是伺服器,https前兩次握手要通過抓包工具提供的證書完成.通過偽裝成伺服器,拿到真正的解密後的請求內容.
對於伺服器,抓包工具就是客戶端,這裡通訊的前兩次握手是利用伺服器下發的證書完成的.這個過程相信抓包工具內部已經處理好了.

現在問題是,抓包工具提供的證書一般都是不在系統根證書列表中,所以我們需要做的是,將抓包工具提供的證書安裝到我們的手機/模擬器/作業系統,這樣https第一次握手就可以通過,然後所有請求就可以經抓包工具顯示並轉發了.

怎麼拿到抓包工具的證書?

很簡單,去訪問抓包工具的伺服器:
比如fiddler:

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

下載後放到手機裡,在"設定-安全-安裝憑據"裡安裝就行了.

當然,fiddler要用https抓包還有開啟它的https抓包功能:

那個下拉框可以選擇 抓所有程式/只抓瀏覽器/只抓遠端端(手機).

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

https學習筆記以及在retrofit/okhttp中的使用(超多圖,爪機慎入)

參考/學習資料

圖解SSL/TLS協議
SSL/TLS協議執行機制的概述
Retrofit中如何正確的使用https?
HTTPS理論基礎及其在Android中的最佳實踐

相關文章