Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最新Android SDK和Emulator上的Charles SSL代理问题_Android_Ssl_Charles Proxy - Fatal编程技术网

最新Android SDK和Emulator上的Charles SSL代理问题

最新Android SDK和Emulator上的Charles SSL代理问题,android,ssl,charles-proxy,Android,Ssl,Charles Proxy,我不知道这是否与更新Android构建工具有关,因为我没有立即尝试,但我似乎无法让Charles在Android上正确使用SSL代理(以前工作正常) 简而言之,如果我在Charles上的api端点上启用ssl代理,我会得到: Caused by: java.security.cert.CertificateException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not v

我不知道这是否与更新Android构建工具有关,因为我没有立即尝试,但我似乎无法让Charles在Android上正确使用SSL代理(以前工作正常)

简而言之,如果我在Charles上的api端点上启用ssl代理,我会得到:

Caused by: java.security.cert.CertificateException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at Wed Aug 31 10:09:00 GMT+02:00 2016 (compared to Thu Sep 01 15:18:53 GMT+02:00 2016)
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:344)
at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:219)
at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:115)
at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:556)
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
当然,我已经检查了我们的服务器证书(它们没有过期)。我已经检查过很多次了,我尝试过删除模拟器(API 23和24)并重新安装新的模拟器,我甚至尝试过升级构建工具并使用Java 8将sdk版本编译为24。我还尝试升级到Charles 4并重新安装根证书

keytool-list-keystore
/usr/libexec/java_home
/jre/lib/security/cacerts-storepass changeit
确实列出了查尔斯证书。(适用于1.7和1.8 JDK)

Charles根证书已正确安装在仿真器上,将于2044年到期

如果我在Charles上禁用SSL代理,那么在没有Charles运行的情况下,一切都会恢复正常

此外,当使用运行API 24的仿真器时,例外情况略有不同:

Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:563)
at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:444)
at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:508)
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401)
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375)
at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304)
at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178)
at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596)
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
更重要的是要注意,相同的设置在使用相同api端点的iOS模拟器上运行良好。所以这肯定与Java/Android配置有关


非常感谢您的帮助。

我最终删除了所有的gradle缓存文件夹和project.gradle文件夹

rm -rf ~/.gradle/caches
rm -rf .gradle

迫使Kotlin使用v1.0.3而不是EAP版本,它又恢复了工作。我不知道这里到底出了什么问题。

我最终删除了所有的gradle缓存文件夹和project.gradle文件夹

rm -rf ~/.gradle/caches
rm -rf .gradle

迫使Kotlin使用v1.0.3而不是EAP版本,它又恢复了工作。我不完全知道这里出了什么问题。

如果您将API级别定为24,Android 7.0就会出现这种情况。现在,默认情况下,用户添加的CA不受信任,每个应用程序都必须明确选择加入

要使应用程序信任Charles证书,请在AndroidManifest中声明自定义网络安全配置

<application
    android:networkSecurityConfig="@xml/network_security_config"
    >

更多信息:如果您将API级别定为24,Android 7.0就会出现这种情况。现在,默认情况下,用户添加的CA不受信任,每个应用程序都必须明确选择加入

要使应用程序信任Charles证书,请在AndroidManifest中声明自定义网络安全配置

<application
    android:networkSecurityConfig="@xml/network_security_config"
    >

更多信息:和

您确定它能与所有模拟器一起工作吗?对我来说,API 19和23模拟器可以工作,但API 24不能。你确定它可以与所有模拟器一起工作吗?对我来说,API 19和23模拟器可以工作,但API 24不能。