Android 7对证书的处理方式进行了一些更改(http://android-developers.blogspot.com/2016/07/changes-to-trusted-certificate.html)不知怎么的,我不能让查尔斯的代理人再工作了。
我network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
我正在调试模式下运行。但无论如何,我都会得到javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。
不用说,我确实从设置安装了
pfx
证书-
我正在使用okhttp3作为HTTP库。
知道我做错了什么吗?
对我来说,SSL代理在版本
构建变体中不起作用。在debug
中工作。
根据OP注释的疑难解答线索,答案是只将代理的CA证书安装为可信证书,而不是其证书私钥。
这个问题是由两个因素引起的:
>
不仅安装MiTM代理的CA证书,还安装其私钥(从而使设备上的VPN应用程序能够解密来自其他应用程序的/MiTM流量)。您不需要设备上MiTM代理的私钥。
Android牛轧糖在<代码>设置中的行为变化-
在Nougat之前,设置-
更复杂的是,
设置-
附言关于网络安全配置,您可能应该将应用配置为在调试模式下也信任“系统”信任锚(调试覆盖部分)。否则,应用程序的调试版本将不起作用,除非连接由 Android 设备上的 CA 证书作为受信任安装的代理进行 MiTM。
解决方案是不要使用.p12,只需使用Chrome(在wifi上配置代理)导航即可 http://charlesproxy.com/getssl 并安装下载的.pem文件。
我在运行Android 7.0的Nexus 5X上遇到了完全相同的问题。之前从Charles 3.11.5导出了. p12(帮助-
Android 7.0的总“操作方法”如下所示:
android:networkSecurityConfig=“@xml/network_security_config”
放入
P.S.检查设备上的日期/时间。这应该是正确的。
例外 片段点击:- 在活动中, 详细活动清单, 图像加载使用毕加索, 模型类 从活动到片段的数据流, 我尝试过的解决方案 注意:-应用程序崩溃只在NOUGAT 最后,我实现了修复 将targetSdkVersion从25更改为23 更改后,我的应用程序在牛轧糖也不会崩溃。 我所要知道的就是这个合适的解决方案,或者有什么变通办法。 请引导到正确的方式。 提前谢谢。 碎片 选项卡布局 列表视图
我尝试了太多的选项/博客/脚本来安装GooglePlay for Emulator(通过Android Studio运行),但都没有成功。我看到了很多不同的错误 失败[安装失败\u更新不兼容] 评论-为什么在Emulator上安装GooglePlay如此困难,有人能提供与Marshmallow/Noughat一起使用的步骤或GAPP吗。或者为什么谷歌不提供标准步骤来为模拟器安装GApps! 以下是
因此,以下是几年/几个月前可能对我有所帮助的一些类似但过时的答案: 为什么我看不到超文本传输协议或https流量从Chrome浏览器Android上查尔斯代理? 如何让charles proxy使用Android 7 nougat? 我遵循了所有的说明,我可以很好地读取http请求,但不能读取https请求。还是不知道我做错了什么。因为我刚刚遵循了上述指南,所以我没有太多自己的文章可以发表。 我认
我的应用程序在之前的Android版本上运行完美,在实际设备上从4.0测试到6.0.1。工作室仿真牛轧糖7.0和7.1没问题。然而,当我让我的朋友在他运行7.0的设备上测试APK时,这在几秒钟内就发生了: 崩溃通知 我没有访问该设备的权限(他住得很远),并且我无法在网上找到该特定错误的任何相关信息。原因可能是什么?
我正在使用reverfit进行api调用,我从服务器得到了几乎不到30KB大小的JSON响应。当JSON将响应解析为一个复杂对象时,它会抛出这个错误。 如果我尝试将响应存储在对象类中,然后通过LinkedHashMap获取值,我就能够获取数据。但是,这将是一个繁琐的过程。 有谁能帮我弄清楚这里的问题是什么,以及如何找到解决办法吗? 根据我的研究,这种情况只发生在版本>=牛轧糖的android设备上