![]() |
Hostname verifier in JAVA
Dear java users/developers,
I am trying to validate certificates in JAVA imported from the server but it seems that my code is wrong. Could you please let me know where I have made a mistake? Code is following: package ssltest; import java.io.*; import java.net.*; import java.util.*; import javax.net.ssl.*; import java.security.cert.*; import java.security.*; import java.util.regex.*; /** * * @author CZ2B10q6 */ public class SSLTest implements HandshakeCompletedListener{ private int port = 5000; private String ip="192.168.0.5"; private SSLSocketFactory sslSocketFactory; private SSLSocket connection; private SSLContext sc; private PrintWriter outStream; private BufferedReader inStream; /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here System.out.println("Start"); SSLTest e = new SSLTest(); } public SSLTest() { System.out.println("Connecting to "+ip+" to port "+port); connectTo(); } public final void disableCertificates() { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public boolean isClientTrusted(X509Certificate[] arg0) { return true; } public boolean isServerTrusted(X509Certificate[] arg0) { return true; } } }; // Install the all-trusting trust manager try { sc = SSLContext.getInstance("TLSv1"); String help = sc.getProvider().toString(); System.out.println(sc.getProvider().getName()); System.out.println(help); help = sc.getProvider().getClass().toString(); System.out.println(help); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.g etSocketFactory()); } catch (Exception e) { e.printStackTrace(); } HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String string, SSLSession ssls) { System.out.println("Warning: URL Host: " + string + " vs. " + ssls.getPeerHost()); return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(hv); } private static void printSocketInfo(SSLSocket s) { System.out.println("Socket class: "+s.getClass()); System.out.println(" Remote address = " +s.getInetAddress().toString()); System.out.println(" Remote port = "+s.getPort()); System.out.println(" Local socket address = " +s.getLocalSocketAddress().toString()); System.out.println(" Local address = " +s.getLocalAddress().toString()); System.out.println(" Local port = "+s.getLocalPort()); System.out.println(" Need client authentication = " +s.getNeedClientAuth()); SSLSession ss = s.getSession(); System.out.println(" Cipher suite = "+ss.getCipherSuite()); System.out.println(" Protocol = "+ss.getProtocol()); } public void connectTo() { String patternString = "AES.*256"; Pattern pattern = Pattern.compile(patternString); Matcher matcher; boolean matchFound; try { System.out.println("Initialization of trust Manager"); disableCertificates(); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); Provider[] pr = Security.getProviders(); for(int i=0;i<pr.length;i++) { System.out.println("Provider:"+pr[i].getName()); } SSLSocketFactory sf = sc.getSocketFactory(); System.out.println("create socket"); SSLSocket s = (SSLSocket)sf.createSocket(ip, port); s.setEnabledProtocols(new String[]{"SSLv3","TLSv1"}); String[] prot = s.getEnabledProtocols(); for(int i=0;i<prot.length;i++) { System.out.println(prot[i]); } String[] set = s.getSupportedCipherSuites(); for(int i=0;i<set.length;i++) { matcher = pattern.matcher(set[i]); matchFound = matcher.find(); //if(matchFound) System.out.println(set[i]); } String[] ciphers = s.getEnabledCipherSuites(); for(int j=0;j<ciphers.length;j++) { System.out.println("Ciphers:" +ciphers[j]); } System.out.println("socket created"); PrintWriter out2 = new PrintWriter(s.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println("Getting session"); SSLSession session = ((SSLSocket) s).getSession(); System.out.println("Getting session was done"); System.out.println("Peer host is " + session.getPeerHost()); System.out.println("Cipher is " + session.getCipherSuite()); System.out.println("Protocol is " + session.getProtocol()); printSocketInfo((SSLSocket) s); String x; System.out.println("Retrieving:"); x = in.readLine(); System.out.println(x); System.out.println("Sending LOGIN"); out2.println("START: 0;LOGIN;TOKEN;AUKLs_ot0DmEX.Ilv4YcQ04kKHaZJNyG:END "); out2.flush(); System.out.println("Reading Welcome message"); x = in.readLine(); System.out.println(x); out2.println("KITTY"); out2.flush(); x = in.readLine(); System.out.println(x); in.close(); out2.close(); s.close(); } catch(Exception e) { } } } |
| All times are GMT. The time now is 04:51 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.