首页 > 解决方案 > java.lang.IllegalStateException:无法在 AndroidPlatform、sslSocketFactory 上提取信任管理器

问题描述

在我的应用程序中,我集成了两个库,即聊天和视频通话......问题是当我先打开视频库时,聊天和视频通话库都可以正常工作,但是当我先打开聊天库,然后打开视频,它导致异常...我认为这是具有默认信任管理器的套接字的问题..

我在视频通话库中使用的示例代码来创建 sslcontext

trustManagers = new TrustManager[]{new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain, String authType)
                        throws CertificateException {
                }

                @Override
                public void checkServerTrusted(X509Certificate[] chain, String authType)
                        throws CertificateException {
                }

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                   }
                }
            };

            try {

                sslContext = SSLContext.getInstance("TLS");
                sslContext.init(null, trustManagers, null);
            } catch (NoSuchAlgorithmException | KeyManagementException e) {
                e.printStackTrace();
            }

我得到的异常是: java.lang.IllegalStateException: Unable to extract the trust manager on AndroidPlatform, sslSocketFactory is class org.conscrypt.OpenSSLSocketFactoryImpl ...请帮助任何人。

标签: javaandroidsockets

解决方案


就我而言,当我以这种方式使用https://stackoverflow.com/a/50264472/2914140时,它发生在模拟器 API 16 上:

val sslcontext: SSLContext = SSLContext.getInstance("TLSv1.2")
sslcontext.init(null, null, null)
val tlsSocketFactory = TLSSocketFactory()

val okHttpClient = OkHttpClient().newBuilder()
    .sslSocketFactory(tlsSocketFactory)
    .build()

当我向方法添加 trustManager 参数时sslSocketFactory,异常消失了。但是 SSL 连接的问题并没有消失。


推荐阅读