Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Oreo上的SSL握手失败_Android_Ssl - Fatal编程技术网

Android Oreo上的SSL握手失败

Android Oreo上的SSL握手失败,android,ssl,Android,Ssl,我正在尝试使用自签名证书与服务器交互 牛轧糖也可以,但奥利奥除外: javax.net.ssl.SSLHandshakeException: Handshake failed at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:444) 基于androido的,在不安全的协议回退方面,情况似乎确实发生了变化。我只想确保我的信托经理不是问题所在: public stati

我正在尝试使用自签名证书与服务器交互

牛轧糖也可以,但奥利奥除外:

javax.net.ssl.SSLHandshakeException: Handshake failed
    at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:444)
基于androido的,在不安全的协议回退方面,情况似乎确实发生了变化。我只想确保我的信托经理不是问题所在:

public static OkHttpClient getClient() {
    try {
        // Create a trust manager that does not validate certificate chains
        final TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @SuppressLint("TrustAllX509TrustManager")
                    @Override
                    public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @SuppressLint("TrustAllX509TrustManager")
                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return new java.security.cert.X509Certificate[]{};
                    }
                }
        };

        // Install the all-trusting trust manager
        final SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

        // Create an ssl socket factory with our all-trusting manager
        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);

        // Allow our hostname
        builder.hostnameVerifier((hostname, session) -> {
            return hostname.equals(API_HOST_NAME);
        });
        builder.addInterceptor(new MyCustomInterceptor());
        if (BuildConfig.DEBUG) {
            builder.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC));
            builder.addNetworkInterceptor(new StethoInterceptor());
        }
        return builder.build();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
服务器的配置基于


我的客户端是否有明显的问题,或者这可能是服务器上的问题?

经过更多测试,它似乎在Oreo上工作,这是Android 7.0的问题

我们的问题的解决方案是堆栈溢出,它引用了Android bug


总之,这个问题与Android 7.0只支持一条椭圆曲线有关。

这里也有同样的例外。你找到解决办法了吗?还没有不幸的是,幸运的是解决了它?或者任何相关的解决方案?不幸的是,仍然没有。这一问题似乎也发生在使用牛轧糖的三星设备上。我仍在等待更多日志,以便更好地了解问题。我们已经解决了这一问题。我引用了下面帮助我们的堆栈溢出帖子。请注意,这并不是一个假定的Android O bug