mirror of
				https://github.com/drwetter/testssl.sh.git
				synced 2025-10-31 05:45:26 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| import java.net.*;
 | |
| import java.io.*;
 | |
| import javax.net.ssl.*;
 | |
| 
 | |
| /*  java SSLSocketClient taken from
 | |
|  *  https://docs.oracle.com/javase/10/security/sample-code-illustrating-secure-socket-connection-client-and-server.htm
 | |
|  *  License: Unknown, not GPLv2
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * This example demonstrates how to use a SSLSocket as client to
 | |
|  * send a HTTP request and get response from an HTTPS server.
 | |
|  * It assumes that the client is not behind a firewall.
 | |
|  * The handshake doesn't include any ALPN protocols. See
 | |
|  * https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/alpn.html
 | |
|  * for more documentation.
 | |
|  */
 | |
| 
 | |
| public class SSLSocketClient {
 | |
| 
 | |
|     public static void main(String[] args) throws Exception {
 | |
|         String host=args[0];
 | |
| 
 | |
|         if ( args == null || args.length == 0 || host.trim().isEmpty() ) {
 | |
|             System.out.println("You need to supply a valid hostname");
 | |
|         } else {
 | |
|             try {
 | |
|                 SSLSocketFactory factory =
 | |
|                     (SSLSocketFactory)SSLSocketFactory.getDefault();
 | |
|                 SSLSocket socket =
 | |
|                     (SSLSocket)factory.createSocket(host, 443);
 | |
| 
 | |
|                 /*
 | |
|                 * send http request
 | |
|                 *
 | |
|                 * Before any application data is sent or received, the
 | |
|                 * SSL socket will do SSL handshaking first to set up
 | |
|                 * the security attributes.
 | |
|                 *
 | |
|                 * SSL handshaking can be initiated by either flushing data
 | |
|                 * down the pipe, or by starting the handshaking by hand.
 | |
|                 *
 | |
|                 * Handshaking is started manually in this example because
 | |
|                 * PrintWriter catches all IOExceptions (including
 | |
|                 * SSLExceptions), sets an internal error flag, and then
 | |
|                 * returns without rethrowing the exception.
 | |
|                 *
 | |
|                 * Unfortunately, this means any error messages are lost,
 | |
|                 * which caused lots of confusion for others using this
 | |
|                 * code.  The only way to tell there was an error is to call
 | |
|                 * PrintWriter.checkError().
 | |
|                 */
 | |
|                 socket.startHandshake();
 | |
| 
 | |
|                 PrintWriter out = new PrintWriter(
 | |
|                                     new BufferedWriter(
 | |
|                                     new OutputStreamWriter(
 | |
|                                     socket.getOutputStream())));
 | |
| 
 | |
|                 out.println("GET / HTTP/1.1");
 | |
|                 out.println("Host: " + host);
 | |
|                 out.println("Connection: close");
 | |
|                 out.println();
 | |
|                 out.flush();
 | |
| 
 | |
|                 /*
 | |
|                 * Make sure there were no surprises
 | |
|                 */
 | |
|                 if (out.checkError())
 | |
|                     System.out.println(
 | |
|                         "SSLSocketClient:  java.io.PrintWriter error");
 | |
| 
 | |
|                 /* read response */
 | |
|                 BufferedReader in = new BufferedReader(
 | |
|                                         new InputStreamReader(
 | |
|                                         socket.getInputStream()));
 | |
| 
 | |
|                 String inputLine;
 | |
|                 while ((inputLine = in.readLine()) != null)
 | |
|                     System.out.println(inputLine);
 | |
| 
 | |
|                 in.close();
 | |
|                 out.close();
 | |
|                 socket.close();
 | |
| 
 | |
|             } catch (Exception e) {
 | |
|                 e.printStackTrace();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | 
