2016-07-27 11 views
1

私のアプリケーションでは、自己署名証明書を使用してhttpsで接続しています。私が述べた手順に従っAndroid N java.security.cert.CertPathValidatorException:証明書パスの信頼アンカーが見つかりません

07-27 14:35:52.927 11424-11956/com.test.Push W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call.getResponse(Call.java:286) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.worklight.wlclient.CertificatePinningInterceptor.intercept(CertificatePinningInterceptor.java:20) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:232) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.worklight.wlclient.OkHttpInterceptor.intercept(OkHttpInterceptor.java:145) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:232) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.squareup.okhttp.Call.execute(Call.java:80) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at com.worklight.wlclient.WLRequestSender.run(WLRequestSender.java:49) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
07-27 14:35:52.927 11424-11956/com.test.Push W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at java.lang.Thread.run(Thread.java:761) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:549) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178) 
07-27 14:35:52.928 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596) 
07-27 14:35:52.929 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 
07-27 14:35:52.929 11424-11956/com.test.Push W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 
07-27 14:35:52.929 11424-11956/com.test.Push W/System.err: ... 20 more 
07-27 14:35:52.929 11424-11956/com.test.Push W/System.err: Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
07-27 14:35:52.929 11424-11956/com.test.Push W/System.err: ... 30 more 

:compilesdkが< 24に設定されている場合、アプリケーションはcompilesdkが24に設定されている場合しかし、私のアプリケーションがhttpsを介してサーバーへの接続に失敗し、次の例外をスローし、完全に正常に動作しますここでhttps://developer.android.com/preview/features/security-config.htmlしかし、私のアプリはまだhttpsを介してサーバーに接続できません。私network_security_config.xmlは以下の通りである:私のAndroidManifest.xmlで

<?xml version="1.0" encoding="utf-8"?> 
<network-security-config> 
    <domain-config> 
     <domain includeSubdomains="true">test.abc.com</domain> 
     <trust-anchors> 
      <certificates src="@raw/ca_norton"/> 
     </trust-anchors> 
    </domain-config> 
</network-security-config> 

アプリケーションタグの下に、次の

<meta-data android:name="android.security.net.config" 
      android:resource="@xml/network_security_config" /> 

ca_norton.crtも生のフォルダにコピーされ含まれています。ここに何かがないのですか?前もって感謝します。

答えて

3

マニフェストにネットワークセキュリティコンフィグを指定するための正しい方法は次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<manifest ... > 
    <application android:networkSecurityConfig="@xml/network_security_config" 
      ... > 
    ... 
    </application> 
</manifest> 

https://developer.android.com/preview/features/security-config.html#manifestを参照してください。メタデータアプローチは、初期のN個のプレビューにのみ存在し、もはやサポートされていません。

+0

はいマニフェストでアンドロイド:networkSecurityConfig = "@ xml/network_security_config"を指定するとうまくいきました。ありがとうございました。 –

関連する問題