[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