Android CertPathValidatorException как решить?

332
17 декабря 2017, 10:17

Я создаю SSLSocket для шифрованного подключения к серверам. На серверах настроено шифрование TLSv1.2

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
                    sslContext.init(null, null, null);
                    SSLSocketFactory sslSf = (SSLSocketFactory) SSLSocketFactory.getDefault();
                    SSLSocket sslSocket = (SSLSocket)sslSf.createSocket(
                            mcSock,
                            mcSock.getInetAddress().getHostAddress(),
                            mcSock.getPort(),
                            false);
                    sslSocket.setUseClientMode(true);
                    sslSocket.startHandshake();

Когда я пытаюсь подключиться, у меня появляется ошибка:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
12-15 16:26:19.435 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)
12-15 16:26:19.435 W/System.err:     at com.nss.mychat.SocketConnection.MyChat$connection.doInBackground(MyChat.java:182)
12-15 16:26:19.435 W/System.err:     at com.nss.mychat.SocketConnection.MyChat$connection.doInBackground(MyChat.java:121)
12-15 16:26:19.436 W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:305)
12-15 16:26:19.436 W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-15 16:26:19.436 W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
12-15 16:26:19.436 W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
12-15 16:26:19.436 W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
12-15 16:26:19.437 W/System.err:     at java.lang.Thread.run(Thread.java:761)
12-15 16:26:19.438 W/System.err: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
12-15 16:26:19.438 W/System.err:     at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:563)
12-15 16:26:19.438 W/System.err:     at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:444)
12-15 16:26:19.438 W/System.err:     at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401)
12-15 16:26:19.438 W/System.err:     at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375)
12-15 16:26:19.438 W/System.err:     at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304)
12-15 16:26:19.439 W/System.err:     at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
12-15 16:26:19.439 W/System.err:     at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
12-15 16:26:19.439 W/System.err:     at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178)
12-15 16:26:19.439 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596)
12-15 16:26:19.439 W/System.err:     at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
12-15 16:26:19.439 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
12-15 16:26:19.439 W/System.err:    ... 8 more
12-15 16:26:19.440 W/System.err: Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Каким образом я могу обойти эту ошибку без TrustAllCerts и самоподписных сертификатов?

READ ALSO
ImageView Мутное изоброжения

ImageView Мутное изоброжения

В приложения есть ViewFlipper в Котором есть ImageView с картинками @minmap первая проблема в том что она мутно выводитсякартинка сама с большим разрешением...

274
в gradle не добавляется зависимость cardView

в gradle не добавляется зависимость cardView

Всем привет, не могу добавить зависимость cardview в gradleRecycler добавляется нормально

228
Неправильно работает Mock

Неправильно работает Mock

Есть тестовый класс :

305