Я создаю 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 и самоподписных сертификатов?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости