[utilities COMMIT] /java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactor...
noreply at shibboleth.net
noreply at shibboleth.net
Fri May 22 19:49:44 EDT 2015
Author: putmanb
Date: Fri May 22 19:49:44 2015
New Revision: 797
URL: http://svn.shibboleth.net/view/utilities?rev=797&view=rev
Log:
Add some diagnostic debug and trace logging from SSLSocket and SSLSession.
Modified:
java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactory.java
Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactory.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactory.java?rev=797&r1=796&r2=797&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactory.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/httpclient/TLSSocketFactory.java Fri May 22 19:49:44 2015
@@ -27,6 +27,8 @@
import javax.annotation.Nullable;
import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLPeerUnverifiedException;
+import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
@@ -42,6 +44,8 @@
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.Args;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
@@ -90,6 +94,9 @@
/** Hostname verifier which implements a strict policy. */
public static final X509HostnameVerifier STRICT_HOSTNAME_VERIFIER = new StrictHostnameVerifier();
+
+ /** Logger. */
+ private final Logger log = LoggerFactory.getLogger(TLSSocketFactory.class);
/** Socket factory. */
private final SSLSocketFactory socketfactory;
@@ -308,10 +315,42 @@
prepareSocket(sslsock, context);
sslsock.startHandshake();
+ logSocketInfo(sslsock);
verifyHostname(sslsock, target, context);
return sslsock;
}
+ /**
+ * Log various diagnostic information from the {@link SSLSocket} and {@link SSLSession}.
+ *
+ * @param socket the SSLSocket instance
+ */
+ private void logSocketInfo(SSLSocket socket) {
+ SSLSession session = socket.getSession();
+ if (log.isDebugEnabled()) {
+ log.debug("Connected to: {}", socket.getRemoteSocketAddress());
+
+ log.debug("Supported protocols: {}", (Object)socket.getSupportedProtocols());
+ log.debug("Enabled protocols: {}", (Object)socket.getEnabledProtocols());
+ log.debug("Selected protocol: {}", session.getProtocol());
+
+ log.debug("Supported cipher suites: {}", (Object)socket.getSupportedCipherSuites());
+ log.debug("Enabled cipher suites: {}", (Object)socket.getEnabledCipherSuites());
+ log.debug("Selected cipher suite: {}", session.getCipherSuite());
+ }
+
+ if (log.isTraceEnabled()) {
+ try {
+ log.trace("Peer principal: {}", session.getPeerPrincipal());
+ log.trace("Peer certificates: {}", (Object)session.getPeerCertificates());
+ log.trace("Local principal: {}", session.getLocalPrincipal());
+ log.trace("Local certificates: {}", (Object)session.getLocalCertificates());
+ } catch (SSLPeerUnverifiedException e) {
+ log.warn("SSL exception enumerating peer certificates", e);
+ }
+ }
+ }
+
/**
* Get a normalized String array from a context attribute holding a {@link List<String>}.
*
More information about the commits
mailing list