SslSocketInfo.java - SSL Socket Information

Q

How to get more information about the SSL Socket object? It is created as "SSLSocketFactory.createSocket()".

✍: FYIcenter

A

If you created a URL object with "new java.net.URL(...)", you can use the following sample Java code to get more information about the URL object:

// Copyright (c) FYIcenter.com
import java.net.*;
import java.io.*;
import javax.net.ssl.*;

public class SslSocketInfo {
   public static void main(String[] args) throws Exception {
      String host = "www.oracle.com";
     
      SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
      SSLSocket socket = (SSLSocket)factory.createSocket(host, 443);

      socket.startHandshake();
    System.out.println("SSL Socket Information");
      System.out.println("   Class name: "+socket.getClass().getName());
      System.out.println("   Remote address = "+socket.getInetAddress());
      System.out.println("   Remote port = "+socket.getPort());
      System.out.println("   Local socket address = "+socket.getLocalSocketAddress());
      System.out.println("   Local address = "+socket.getLocalAddress().toString());
      System.out.println("   Local port = "+socket.getLocalPort());
      System.out.println("   Need client authentication = "+socket.getNeedClientAuth());

      SSLSession session = socket.getSession();
      System.out.println("   Cipher suite = "+session.getCipherSuite());
      System.out.println("   Protocol = "+session.getProtocol());

      socket.close();
   }
}

You can compile and run the above example in a command window:

\fyicenter>\local\jdk-1.8.0\bin\javac SslSocketInfo.java

\fyicenter>\local\jdk-1.8.0\bin\java SslSocketInfo

SSL Socket Information
   Class name: sun.security.ssl.SSLSocketImpl
   Remote address = www.oracle.com/23.203.120.118
   Remote port = 443
   Local socket address = /192.168.1.17:52840
   Local address = /192.168.1.17
   Local port = 52840
   Need client authentication = false
   Cipher suite = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
   Protocol = TLSv1.2

The output confirms that:

  • The sun.security.ssl.SSLSocketImpl implementation class of the JSSE API is actually used to support SSL Socket communication.
  • The communication data is encrypted with AES_128 cipher.

 

SslCipherList.java - SSL Cipher List

SslSocketClient.java - SSL Socket Client Example

Examples for jsse.jar - Java Secure Socket Extension

⇑⇑ FAQ for jsse.jar - Java Secure Socket Extension

2018-03-31, 1730🔥, 0💬