From 9062c9789ce5da7a2dc89d23db7de6c732389f8d Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 30 Jun 2015 15:01:17 +0300 Subject: [PATCH] accept Stepic certificate --- .../edu/stepic/EduStepicConnector.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/python/educational/src/com/jetbrains/edu/stepic/EduStepicConnector.java b/python/educational/src/com/jetbrains/edu/stepic/EduStepicConnector.java index c2157b2e4b8c..0ca811c07b41 100644 --- a/python/educational/src/com/jetbrains/edu/stepic/EduStepicConnector.java +++ b/python/educational/src/com/jetbrains/edu/stepic/EduStepicConnector.java @@ -36,8 +36,15 @@ import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.jetbrains.annotations.NotNull; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.X509Certificate; import java.util.*; public class EduStepicConnector { @@ -68,15 +75,30 @@ public class EduStepicConnector { HttpClientBuilder builder = HttpClients.custom().setSslcontext(CertificateManager.getInstance().getSslContext()).setMaxConnPerRoute(100); ourCookieStore = new BasicCookieStore(); - ourClient = builder.setDefaultCookieStore(ourCookieStore).build(); try { + // Create a trust manager that does not validate certificate for this connection + TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { return null; } + public void checkClientTrusted(X509Certificate[] certs, String authType) {} + public void checkServerTrusted(X509Certificate[] certs, String authType) {} + }}; + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, trustAllCerts, new SecureRandom()); + ourClient = builder.setDefaultCookieStore(ourCookieStore).setSslcontext(sslContext).build(); + ourClient.execute(request); saveCSRFToken(); } catch (IOException e) { LOG.error(e.getMessage()); } + catch (NoSuchAlgorithmException e) { + LOG.error(e.getMessage()); + } + catch (KeyManagementException e) { + LOG.error(e.getMessage()); + } } private static void saveCSRFToken() {