diff --git a/src/main/java/com/neon/intellij/plugins/gitlab/UnsafeOkHttpClientSupplier.java b/src/main/java/com/neon/intellij/plugins/gitlab/UnsafeOkHttpClientSupplier.java index 5da471a..8a077a7 100644 --- a/src/main/java/com/neon/intellij/plugins/gitlab/UnsafeOkHttpClientSupplier.java +++ b/src/main/java/com/neon/intellij/plugins/gitlab/UnsafeOkHttpClientSupplier.java @@ -4,7 +4,9 @@ import okhttp3.OkHttpClient; import javax.net.ssl.*; +import java.security.KeyStore; import java.security.cert.CertificateException; +import java.util.Arrays; import java.util.List; import java.util.function.Supplier; @@ -43,8 +45,18 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers() { // Create an ssl socket factory with our all-trusting manager final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance( + TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore) null); + TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); + if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { + throw new IllegalStateException("Unexpected default trust managers:" + + Arrays.toString(trustManagers)); + } + X509TrustManager trustManager = (X509TrustManager) trustManagers[0]; + OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.sslSocketFactory(sslSocketFactory); + builder.sslSocketFactory(sslSocketFactory, trustManager); builder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) {