![](/img/trans.png)
[英]Not able to run HTTPS content with Charles proxy on android emulator , even after installing certificate
[英]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文件所做的
使用Apk Extractor獲取 apk 文件。
使用apktool d ${APK_FILE}.apk
提取文件。
修改其network_security_config.xml
和AndroidManifest.xml
運行apktool b ${APK_FILE}
將提取的文件恢復為 apk 文件。
運行apksigner sign -ks my-key.keystore ${APK_FILE}/dist/${APK_FILE}.apk
對 apk 文件進行簽名。
將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.