SslClientCmd.java - SSL Client Command Example

Q

How to create an SSL client program to run like a command?

✍: FYIcenter

A

Here is an SSL client example program you can run like a command to communicate to any HTTPS web server:

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

public class SslClientCmd {
   public static void main(String[] args) throws Exception {
      String host = "www.oracle.com";
      int port = 443;
      String url = "http://www.oracle.com/index.html";
      if (args.length < 3) {
          System.out.println("USAGE: java SslClientCmd host port url");
          System.exit(-1);
      }
      host = args[0];
      port = Integer.parseInt(args[1]);
      url = args[2];
    
      SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
      SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
      socket.startHandshake();

      PrintWriter out = new PrintWriter(new BufferedWriter(
         new OutputStreamWriter(socket.getOutputStream())));
      out.println("GET "+url+" HTTP/1.1");
      out.println();
      out.flush();

      BufferedReader in = new BufferedReader(new InputStreamReader(
         socket.getInputStream()));
      String line = in.readLine();
    while (line.length()>0) {
       System.out.println(line);
         line = in.readLine();
    }

      in.close();
      out.close();
      socket.close();
   }
}

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

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

\fyicenter>\local\jdk-1.8.0\bin\java SslClientCmd
USAGE: java SslClientCmd host port url

\fyicenter>\local\jdk-1.8.0\bin\java SslClientCmd
   www.oracle.com 443 http://www.oracle.com/index.html | more
HTTP/1.1 200 OK
Server: Oracle-Application-Server-11g
Content-Language: en-US
Content-Type: text/html; charset=UTF-8
Content-Length: 42129
...
  
\fyicenter>\local\jdk-1.8.0\bin\java SslClientCmd
   www.oracle.com 443 http://www.oracle.com/junk.html
HTTP/1.1 404 Not Found
Server: Oracle-Application-Server-11g
Accept-Ranges: bytes
Content-Length: 2720
Content-Type: text/html; charset=UTF-8
...

 

Create SSL Server Certificate with "keytool"

SslCipherList.java - SSL Cipher List

Examples for jsse.jar - Java Secure Socket Extension

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

2018-03-31, 1868🔥, 0💬