diff --git a/httpclient/pom.xml b/httpclient/pom.xml index 106ed3de1e..020106c497 100644 --- a/httpclient/pom.xml +++ b/httpclient/pom.xml @@ -173,7 +173,7 @@ 1.10.8 4.3.3 - 4.3.4 + 4.3.6 2.4.0 diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientLiveManualTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java similarity index 66% rename from httpclient/src/test/java/org/baeldung/httpclient/HttpsClientLiveManualTest.java rename to httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java index df3ac3f25b..aa64bafb23 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientLiveManualTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java @@ -7,7 +7,7 @@ import java.io.IOException; import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; -import javax.net.ssl.SSLPeerUnverifiedException; +import javax.net.ssl.SSLException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; @@ -25,24 +25,25 @@ import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingClientConnectionManager; -import org.junit.Ignore; import org.junit.Test; /** * This test requires a localhost server over HTTPS
* It should only be manually run, not part of the automated build * */ -public class HttpsClientLiveManualTest { +public class HttpsClientSslLiveTest { + + // "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1" // local + // "https://mms.nw.ru/" // hosted + private static final String HOST_WITH_SSL = "https://mms.nw.ru/"; // tests - @Test(expected = SSLPeerUnverifiedException.class) - @Ignore("Only for a server that has HTTPS enabled (on 8443)") + @Test(expected = SSLException.class) public final void whenHttpsUrlIsConsumed_thenException() throws ClientProtocolException, IOException { final CloseableHttpClient httpClient = HttpClientBuilder.create().build(); - final String urlOverHttps = "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1"; - final HttpGet getMethod = new HttpGet(urlOverHttps); + final HttpGet getMethod = new HttpGet(HOST_WITH_SSL); final HttpResponse response = httpClient.execute(getMethod); assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); } @@ -58,13 +59,34 @@ public class HttpsClientLiveManualTest { }; final SSLSocketFactory sf = new SSLSocketFactory(acceptingTrustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); final SchemeRegistry registry = new SchemeRegistry(); - registry.register(new Scheme("https", 8443, sf)); + registry.register(new Scheme("https", 443, sf)); final ClientConnectionManager ccm = new PoolingClientConnectionManager(registry); final CloseableHttpClient httpClient = new DefaultHttpClient(ccm); - final String urlOverHttps = "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1"; - final HttpGet getMethod = new HttpGet(urlOverHttps); + final HttpGet getMethod = new HttpGet(HOST_WITH_SSL); + final HttpResponse response = httpClient.execute(getMethod); + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + + httpClient.close(); + } + + @Test + public final void givenHttpClientAfter4_3_whenAcceptingAllCertificates_thenCanConsumeHttpsUriWithSelfSignedCertificate() throws IOException, GeneralSecurityException { + final TrustStrategy acceptingTrustStrategy = new TrustStrategy() { + @Override + public final boolean isTrusted(final X509Certificate[] certificate, final String authType) { + return true; + } + }; + final SSLSocketFactory sf = new SSLSocketFactory(acceptingTrustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + final SchemeRegistry registry = new SchemeRegistry(); + registry.register(new Scheme("https", 443, sf)); + final ClientConnectionManager ccm = new PoolingClientConnectionManager(registry); + + final CloseableHttpClient httpClient = new DefaultHttpClient(ccm); + + final HttpGet getMethod = new HttpGet(HOST_WITH_SSL); final HttpResponse response = httpClient.execute(getMethod); assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); @@ -80,8 +102,7 @@ public class HttpsClientLiveManualTest { // new - final String urlOverHttps = "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1"; - final HttpGet getMethod = new HttpGet(urlOverHttps); + final HttpGet getMethod = new HttpGet(HOST_WITH_SSL); final HttpResponse response = httpClient.execute(getMethod); assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); }