安裝系統根憑證¶
此介面用於在您的 Android 系統內安裝系統級別的根憑證,並與所有 Android 版本相容。
您可能會對此感到困惑,這裡的根憑證和 FIRERPA 的服務憑證分別是什麼。FIRERPA 服務憑證是用於加密 FIRERPA 與您之間的通訊流量,而這裡所指的根憑證是指 Android 系統內建的根憑證,此憑證用於系統中 HTTPS 等相關流量的加解密工作。如果您了解封包擷取(抓包),這裡的根憑證即是指用於封包擷取的憑證。您可以透過本章的介面搭配設定代理介面來實現中間人攻擊(Man-in-the-Middle)的封包擷取。當然,您也可以選擇使用我們封裝好的 startmitm.py。我們在此只是為了向您介紹這個基礎功能的實現方式。
準備工作¶
請確保您已經準備好 fiddler、mitmproxy 提供給您的憑證。對於 mitmproxy,您應該使用的憑證是 mitmproxy-ca-cert.pem。而對於 fiddler,憑證格式可能是 crt。您應該可以在 fiddler 中匯出此檔案,直接將該檔案路徑作為參數提供即可,無需擔心任何檔名轉換問題。為了避免浪費不必要的時間,我們推薦使用 mitmproxy。如果您使用的是 Charles 等工具,我們無法保證您可以一次性完成設定,因為這類應用程式的設定項目較為複雜,且您可能需要理解各種代理類型才能正確設定 HTTPS 中間人。如果您堅持要使用,建議使用 Charles 的 SOCKS5 作為代理協定。
安裝根憑證¶
有了您準備好的憑證檔案路徑後,您可以直接編寫以下介面來安裝 mitmproxy 的根憑證。安裝一次後將永久存在,無需重複安裝。
d.install_ca_certificate(cert_path)
卸載根憑證¶
您可以呼叫以下程式碼來移除安裝在裝置上的自訂根憑證。我們不建議您頻繁地安裝與卸載,在非必要的情況下可以不用呼叫此介面。
d.uninstall_ca_certificate(cert_path)
完整的程式碼如下(我們不再重複實例化 d 裝置實例)
import os
# 拼接 mitmproxy-ca-cert.pem 檔案的路徑
HOME = os.path.expanduser("~")
cert_path = os.path.join(HOME, ".mitmproxy", "mitmproxy-ca-cert.pem")
# 以 mitmproxy 為例,使用以下程式碼安裝中間人憑證
d.install_ca_certificate(cert_path)
# 使用以下程式碼卸載憑證
d.uninstall_ca_certificate(cert_path)
此憑證安裝與卸載介面是通用的,您可以用它來安裝任何應用程式要求您安裝的憑證。您同樣可以用它來安裝 Fiddler/Charles 要求您安裝的憑證,只需提供檔案路徑即可。如果您要進行封包擷取,隨後可以參考 設定代理 章節,將代理伺服器設定為中間人應用程式正在監聽的位址即可。