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