[java-support] 02/02: Update HttpClient support classes to use produce/use new TLSSocketFactory.

Brent Putman putmanb at georgetown.edu
Tue Nov 3 19:41:55 EST 2015


This is an automated email from the git hooks/post-receive script.

putmanb pushed a commit to branch master
in repository java-support.

commit df13bb791c908b86cf2a9f229e8d30c2c6dc7956
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Tue Nov 3 18:57:19 2015 -0500

    Update HttpClient support classes to use produce/use new
    TLSSocketFactory.
---
 .../java/support/httpclient/HttpClientBuilder.java |  4 +--
 .../java/support/httpclient/HttpClientSupport.java | 38 +++++++++++++++++++++-
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientBuilder.java b/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientBuilder.java
index 6b5fede..651872e 100644
--- a/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientBuilder.java
+++ b/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientBuilder.java
@@ -588,9 +588,9 @@ public class HttpClientBuilder {
         if (getTLSSocketFactory() != null) {
             builder.setSSLSocketFactory(getTLSSocketFactory());
         } else if (connectionDisregardTLSCertificate) {
-            builder.setSSLSocketFactory(HttpClientSupport.buildNoTrustSSLConnectionSocketFactory());
+            builder.setSSLSocketFactory(HttpClientSupport.buildNoTrustTLSSocketFactory());
         } else {
-            builder.setSSLSocketFactory(HttpClientSupport.buildStrictSSLConnectionSocketFactory());
+            builder.setSSLSocketFactory(HttpClientSupport.buildStrictTLSSocketFactory());
         }
 
         if (connectionCloseAfterResponse) {
diff --git a/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientSupport.java b/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientSupport.java
index 055514d..44b05fd 100644
--- a/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientSupport.java
+++ b/src/main/java/net/shibboleth/utilities/java/support/httpclient/HttpClientSupport.java
@@ -21,13 +21,17 @@ import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
+import java.util.Collections;
 
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
+import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
+import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.conn.ssl.SSLContexts;
+import org.apache.http.conn.ssl.StrictHostnameVerifier;
 
 /**
  * Support class for using {@link org.apache.http.client.HttpClient} and related components.
@@ -38,24 +42,56 @@ public final class HttpClientSupport {
     private HttpClientSupport() { }
     
     /**
+     * Build an instance of TLS-capable {@link LayeredConnectionSocketFactory} which uses
+     * the standard JSSE default {@link SSLContext} and which performs
+     * strict hostname verification.
+     * 
+     * @return a new instance of HttpClient SSL connection socket factory
+     */
+    public static LayeredConnectionSocketFactory buildStrictTLSSocketFactory() {
+        return new TLSSocketFactoryBuilder()
+            .setHostnameVerifier(new StrictHostnameVerifier())
+            .build();
+    }
+    
+    /**
+     * Build a TLS-capable instance of {@link LayeredConnectionSocketFactory} which accepts all peer certificates
+     * and performs no hostname verification.
+     * 
+     * @return a new instance of HttpClient SSL connection socket factory
+     */
+    public static LayeredConnectionSocketFactory buildNoTrustTLSSocketFactory() {
+        return new TLSSocketFactoryBuilder()
+            .setTrustManagers(Collections.<TrustManager>singletonList(buildNoTrustX509TrustManager()))
+            .setHostnameVerifier(new AllowAllHostnameVerifier())
+            .build();
+    }
+    
+    /**
      * Build an instance of {@link SSLConnectionSocketFactory} which uses
      * the standard HttpClient default {@link SSLContext} and which uses
      * a strict hostname verifier {@link SSLConnectionSocketFactory#STRICT_HOSTNAME_VERIFIER}.
      * 
      * @return a new instance of HttpClient SSL connection socket factory
+     * 
+     * @deprecated use instead {@link #buildStrictTLSSocketFactory()}
      */
+    @Deprecated
     public static SSLConnectionSocketFactory buildStrictSSLConnectionSocketFactory() {
         return new SSLConnectionSocketFactory(
                 SSLContexts.createDefault(), 
                 SSLConnectionSocketFactory.STRICT_HOSTNAME_VERIFIER);
     }
     
-    /**
+     /**
      * Build an instance of {@link SSLConnectionSocketFactory} which accepts all peer certificates
      * and performs no hostname verification.
      * 
      * @return a new instance of HttpClient SSL connection socket factory
+     * 
+     * @deprecated use instead {@link #buildNoTrustTLSSocketFactory()}
      */
+    @Deprecated
     public static SSLConnectionSocketFactory buildNoTrustSSLConnectionSocketFactory() {
         X509TrustManager noTrustManager = buildNoTrustX509TrustManager();
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list