2017-01-04 12 views
1

私はちょうどthe aerogear push notifcation solutionをテストし始めました。私はドッカーを介してローカルにインストールしました。 SSL証明書に問題があるようです。 閉鎖されていると思われる​​が見つかりました。 私はアンドロイドのエミュレータを登録しようとした私は、次の問題になっています:ドッカーの内側Aerogear SSLHandshakeException CertPathValidatorException

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328) 
at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103) 
at com.android.okhttp.Connection.connect(Connection.java:143) 
at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185) 
at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) 
at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341) 
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) 
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245) 
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) 
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java) 
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.addBodyRequest(HttpRestProvider.java:219) 
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:147) 
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:134) 
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:180) 
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:135) 
at android.os.AsyncTask$2.call(AsyncTask.java:295) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:318) 
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) 
at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103)  
at com.android.okhttp.Connection.connect(Connection.java:143)  
at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)  
at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)  
at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)  
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)  
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)  
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)  
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.addBodyRequest(HttpRestProvider.java:219)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:147)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:134)  
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:180)  
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:135)  
at android.os.AsyncTask$2.call(AsyncTask.java:295)  
at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
at java.lang.Thread.run(Thread.java:818)  
Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:318)  
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)  
at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103)  
at com.android.okhttp.Connection.connect(Connection.java:143)  
at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)  
at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)  
at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)  
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)  
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)  
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)  
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)  
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.addBodyRequest(HttpRestProvider.java:219)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:147)  
at org.jboss.aerogear.android.pipe.http.HttpRestProvider.post(HttpRestProvider.java:134)  
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:180)  
at org.jboss.aerogear.android.unifiedpush.fcm.AeroGearFCMPushRegistrar$4.doInBackground(AeroGearFCMPushRegistrar.java:135)  
at android.os.AsyncTask$2.call(AsyncTask.java:295)  
at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
at java.lang.Thread.run(Thread.java:818)  

答えて

0

WildflyをAndroidとUPS間のHTTPトラフィックを暗号化するために、自己署名証明書を使用しています。これを回避するにはいくつかの方法があります。

    こと https://developer.android.com/training/articles/security-config.html#CertificatePinning(あなたドッカーイメージでポート8080を公開し、AndroidのNにピン留め
  1. その使用証明書を使用して接続し、アプリにWildflyが使用しているSSL証明書をロード
  2. 認証局を使用して証明書に署名
  3. は、SSLエラー(telling java to accept self-signed ssl certificate
+0

おかげであなたの答えのために多くのことを無視するのTrustManagerを注入します。私はそのような回避策を見てきました(この質問のリンクで述べたチケットは静かに同じものを提案しています)。私は本当の解決策を得ることができるかどうか疑問に思っていました(SSLエラーを無視しないで...)。 –

+0

実際の解決策は、LetsEncrypt(または他の権限)によって署名された証明書を使用すること、証明書のピンを使用すること、プロキシを使用すること、またはhttpsを使用しないことです。 –