开启Android Nougat ‘Charles’ing SSL网络
原文链接:https://medium.com/@elye.project/android-nougat-charlesing-ssl-network-efa0951e66de
如果你的应用与后端网络交互,你可能需要使用Charles网络调试代理工具。这是拦截网络并执行所需跟踪甚至更改它的一种非常方便的方法。
它也适用于安全的SSL网络,只要通常从http://www.charlesproxy.com/getssl/下载所需的证书。
不幸的是,从Android7(SDK24)开始,SSL网络不可直接查看。这实际上是Android 7中新引入的安全功能,因此应用中的SSL网络更安全,不会被第三方拦截。
Nouogat开启SSL代理
但是,如果为了自己的调试,想拦截SSL网络,你必须做什么?只需以下简单两步。
更新AndroidManifest.xml
使用networkSecurityConfig.xml更新AndroidManifest.xml的application段。
<application android:name=”AppName”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:networkSecurityConfig=”@xml/network_security_config”>
添加network_security_config.xml文件
只需在xml文件夹添加这个文件
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
这样就可以像Android 7之前那样工作。因此,在Android 7中,您的应用程序的SSL网络具有了代理功能。
在Nougat中启用SSL Proxy仅用于调试
上述设置很好,但是它违背了Google在Android Nougat中为您的应用添加此安全功能的目的。
因此,要利用此功能,您可能希望仅在调试模式下启用SSL网络的代理功能。
你需要做的仍然是按照上面的步骤,但将networkSecurityConfig.xml的内容更改为下面的内容
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
有了这个,只有调试模式才会覆盖允许的证书来源,包括来自用户的。
哇!现在可以用Charles查看SSL信息了!