簡體   English   中英

Android 模擬器無法信任 Charles 代理證書

[英]Android emulator is not able to trust Charles proxy certificate

我正在按照本教程監控 Android 版本 7 仿真器上的 https 流量。

我發現奇怪的一件事是,我從chls.pro/ssl下載的證書與我通過 Charles 代理訪問網站時遇到的證書不同。

這是我從chls.pro/ssl獲得的證書

在此處輸入圖像描述

可以從設置 -> 安全 -> 受信任的憑據 -> 用戶選項卡中查看此證書。

這是我通過 Charles 代理訪問任何網站時發現的證書:

在此處輸入圖像描述

從圖片中可以看出,他們的指紋是不同的。

這使得我的 Android 模擬器在通過 Charles 代理訪問網站時無法信任證書。

在此處輸入圖像描述

為什么證書不一樣?

如何在 Android 仿真器上查看 https 流量?

我正在使用最新的 Charles 代理,它是 4.5.6 版。

=============================編輯==================== ===============

安全警告是由模擬器上的瀏覽器引起的。

我最初使用“瀏覽器”版本 7.1.2 來訪問一個網站。

在此處輸入圖像描述

在我用 Chrome 替換它后,安全警告不再出現。 而且我可以查看 Chrome 和網站之間的 https 流量。

但我仍然無法查看 Android 應用程序和服務器之間的 https 流量。

這是錯誤消息:

在此處輸入圖像描述

這是我的network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors> 
            <!-- Trust user added CAs -->
            <certificates src="user" overridePins="true" />
        </trust-anchors> 
    </base-config>
</network-security-config>

=============================編輯==================== ===============

Android app的apk文件是從google play下載的。

這是我對apk文件所做的

  1. 使用Apk Extractor獲取 apk 文件。

  2. 使用apktool d ${APK_FILE}.apk提取文件。

  3. 修改其network_security_config.xmlAndroidManifest.xml

  4. 運行apktool b ${APK_FILE}將提取的文件恢復為 apk 文件。

  5. 運行apksigner sign -ks my-key.keystore ${APK_FILE}/dist/${APK_FILE}.apk對 apk 文件進行簽名。

  6. 將apk文件放到Android模擬器中並安裝。

我不確定上述步驟是否會導致應用程序無法信任 Charles 證書。

這是我修改之前的原始network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">appapi.appname.com</domain>
    </domain-config>
</network-security-config>

為什么證書不一樣?

顯示的第一個證書是 Charles 的“證書頒發機構”(CA) 證書。 它是自簽名的(請注意“頒發者”詳細信息與證書詳細信息如何相同),並且不適用於特定域。

第二個證書是網站的證書,由 Charles 的 CA 證書頒發並簽名,以單個特定域作為其主題(未顯示),可用於驗證與該特定域的連接。

證書信任的工作方式是您信任一組 CA 證書,並且每當您收到要驗證的證書時,您都會查看誰頒發了該證書,並根據您擁有的 CA(在某些情況下)查看您是否信任它們情況下,信任鏈中有幾個步驟,因此您一直往上走,直到找到您信任的證書,或者您到達根目錄並放棄)。

那有意義嗎? 在實踐中,Charles 預先生成了一個您需要信任的 CA,然后它會根據需要為每個需要一個的單獨域生成新證書並使用其 CA 對其進行簽名,然后您應該信任這些證書,因為您信任 Charles。

如何在 Android 仿真器上查看 https 流量?

顯示的證書不是您問題的原因,因此很難提供更多詳細信息。 查爾斯需要一些手動配置。 你能添加更多關於你所做的事情以及你看到的錯誤的信息嗎?

如果您不是特別喜歡 Charles,那么 HTTP Toolkit作為替代方法可能會有所幫助。 這是我一直在研究的一個開源工具,因為 Charles 像這樣設置會很痛苦。 它做的所有事情都是一樣的,但是證書設置是完全自動化的,所以你不會遇到這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM