mirror of
				https://github.com/drwetter/testssl.sh.git
				synced 2025-10-31 13:55:25 +01:00 
			
		
		
		
	Add SSLSocketClient in Java
Note this doesn't add alpn (same as openssl). See here https://docs.oracle.com/javase/8/docs/api/javax/net/ssl/SSLSocket.html if you want to add that. This code is NOT GPLv2! It was taken from the Oracle web site which didn't list any license (https://docs.oracle.com/javase/10/security/sample-code-illustrating-secure-socket-connection-client-and-server.htm).
This commit is contained in:
		
							
								
								
									
										87
									
								
								etc/SSLSocketClient.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								etc/SSLSocketClient.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| import java.net.*; | ||||
| import java.io.*; | ||||
| import javax.net.ssl.*; | ||||
|  | ||||
| /*  java SSLSocketClient | ||||
|  *  https://docs.oracle.com/javase/10/security/sample-code-illustrating-secure-socket-connection-client-and-server.htm | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * This example demostrates 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 | ||||
|  */ | ||||
|  | ||||
| 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(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Dirk Wetter
					Dirk Wetter