Ich versuche, mit einem Server mit einem selbst signierten Zertifikat zu interagieren.SSL-Handshake-Fehler auf Oreo
Es funktioniert für Nougat in Ordnung, aber hat eine Ausnahme für Oreo:
javax.net.ssl.SSLHandshakeException: Handshake failed
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:444)
Basierend off Android O changelog, es scheint, wie die Dinge in Bezug auf unsicheres Protokoll Fallbacks geändert haben. Ich möchte nur sicherstellen, dass mein Vertrauen Manager nicht das Problem:
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);
}
}
Die Konfigurationen des Servers aus dem this example basieren.
Gibt es irgendeinen sichtbaren Fehler mit meinem Client, oder ist das vielleicht ein Problem auf dem Server?
Die gleiche Ausnahme hier. Hast du eine Lösung gefunden? – gleroyDroid
Noch nicht leider –
Irgendwelche Glückssache? oder irgendeine relevante Lösung? –