You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Pankaj Kumar <pa...@gmail.com> on 2017/05/12 04:10:58 UTC

Camel with SSL and HostNameVerifier

Hi All,
 I'm new to camel. Plese suggest me how Ican change this class into camel
route xml. Plese give me suggestions


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.inject.Named;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;

public class RequestResponseIml implements RequestResponse {
	@Value(value = "${proxy.host}")
	private String proxyHost;
	@Value(value = "${proxy.port}")
	private String proxyPort;
	@Value(value = "${SSL_CONTEXT}")
	private String ssl_context_version;

	public String invokeAction(String url, String token) throws Exception {

		SSLContext sslcontext = null;
		String response = "";
		try {
			sslcontext = SSLContext.getInstance(ssl_context_version);
			sslcontext.init(new KeyManager[0], new TrustManager[] { new
TrustManager() }, new SecureRandom());

		} catch (NoSuchAlgorithmException e) {
			logger.info("Error NoSuchAlgorithmException " + e.getLocalizedMessage());
		} catch (KeyManagementException e) {
			logger.info("Error KeyManagementException " + e.getLocalizedMessage());
		} catch (Exception e) {
			logger.error("Exception in getting Instance of SSLContext: " +
e.toString());
			throw e;
		}

		try {
			
			SSLSocketFactory factory = sslcontext.getSocketFactory();
						
			logger.info("Creating HttpsURLConnection");
			HttpsURLConnection connection = null;
			InputStream is = null;
			
			Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost,
Integer.parseInt(proxyPort)));
				         
			connection = (HttpsURLConnection) new URL(url).openConnection(proxy);
			logger.info("HttpsURLConnection has created "+connection);	         	
	         connection.setRequestMethod("POST");
	        
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");	 
	         connection.setRequestProperty("Content-Length", "" +
Integer.toString(token.getBytes().length));
	         connection.setRequestProperty("Content-Language", "en-US");  	   	
	         connection.setUseCaches (false);
	         connection.setDoInput(true);
	         connection.setDoOutput(true);	         
	        
			 connection.setSSLSocketFactory(factory);
			 logger.info("connection setSSLSocketFactory");
	         connection.setHostnameVerifier(new HostnameVerifier());
	         logger.info("connection setHostnameVerifier");
	         
	         OutputStream os = connection.getOutputStream();
	         OutputStreamWriter osw = new OutputStreamWriter(os);
	         osw.write(token);
	         osw.flush();
	         osw.close();

	         is =connection.getInputStream();
	       
	         BufferedReader in = new BufferedReader(new InputStreamReader(is));             
	         response = in.readLine();
	 		
			logger.info("Output from NSDL "+response);
	 		is.close();
	 		in.close();
			
		} catch (UnsupportedEncodingException e) {
			String encodeException = "Unsupported Encoding Exception - " +
e.getMessage();
			logger.error(encodeException);
		} catch(Exception e) {
			   logger.info("Error in invokeAction - " + e.getLocalizedMessage());
			   logger.info("Error in invokeAction StactTrace - " +
e.getStackTrace());
			   //e.printStackTrace();
		   }

		return response;
	}
	
	public static class TrustManager implements X509TrustManager {

		public boolean isClientTrusted(X509Certificate cert[]) {
			return true;
		}

		public boolean isServerTrusted(X509Certificate cert[]) {
			return true;
		}

		@Override
		public X509Certificate[] getAcceptedIssuers() {
			return new X509Certificate[0];
		}

		@Override
		public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws
CertificateException {

		}

		@Override
		public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws
CertificateException {

		}
	}

	public static class HostnameVerifier implements HostnameVerifier {

		@Override
		public boolean verify(String arg0, SSLSession arg1) {
			return true;
		}

		public boolean verify(String urlHostname, String certHostname) {
			return true;
		}

	}

}




--
View this message in context: http://camel.465427.n5.nabble.com/Camel-with-SSL-and-HostNameVerifier-tp5799349.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel with SSL and HostNameVerifier

Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
What did you try?

 
--
Andrea Cosentino 
----------------------------------
Apache Camel PMC Member
Apache Karaf Committer
Apache Servicemix PMC Member
Email: ancosen1985@yahoo.com
Twitter: @oscerd2
Github: oscerd


On Friday, May 12, 2017 8:10 AM, Pankaj Kumar <pa...@gmail.com> wrote:



Hi All,

I'm new to camel. Plese suggest me how Ican change this class into camel

route xml. Plese give me suggestions



import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.InetSocketAddress;

import java.net.Proxy;

import java.net.URL;

import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;


import javax.inject.Named;

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.KeyManager;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.SSLSocketFactory;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;


public class RequestResponseIml implements RequestResponse {

    @Value(value = "${proxy.host}")

    private String proxyHost;

    @Value(value = "${proxy.port}")

    private String proxyPort;

    @Value(value = "${SSL_CONTEXT}")

    private String ssl_context_version;


    public String invokeAction(String url, String token) throws Exception {


        SSLContext sslcontext = null;

        String response = "";

        try {

            sslcontext = SSLContext.getInstance(ssl_context_version);

            sslcontext.init(new KeyManager[0], new TrustManager[] { new

TrustManager() }, new SecureRandom());


        } catch (NoSuchAlgorithmException e) {

            logger.info("Error NoSuchAlgorithmException " + e.getLocalizedMessage());

        } catch (KeyManagementException e) {

            logger.info("Error KeyManagementException " + e.getLocalizedMessage());

        } catch (Exception e) {

            logger.error("Exception in getting Instance of SSLContext: " +

e.toString());

            throw e;

        }


        try {

            

            SSLSocketFactory factory = sslcontext.getSocketFactory();

                        

            logger.info("Creating HttpsURLConnection");

            HttpsURLConnection connection = null;

            InputStream is = null;

            

            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost,

Integer.parseInt(proxyPort)));

                        

            connection = (HttpsURLConnection) new URL(url).openConnection(proxy);

            logger.info("HttpsURLConnection has created "+connection);                 

             connection.setRequestMethod("POST");

            

connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");    

             connection.setRequestProperty("Content-Length", "" +

Integer.toString(token.getBytes().length));

             connection.setRequestProperty("Content-Language", "en-US");             

             connection.setUseCaches (false);

             connection.setDoInput(true);

             connection.setDoOutput(true);            

            

             connection.setSSLSocketFactory(factory);

             logger.info("connection setSSLSocketFactory");

             connection.setHostnameVerifier(new HostnameVerifier());

             logger.info("connection setHostnameVerifier");

            

             OutputStream os = connection.getOutputStream();

             OutputStreamWriter osw = new OutputStreamWriter(os);

             osw.write(token);

             osw.flush();

             osw.close();


             is =connection.getInputStream();

          

             BufferedReader in = new BufferedReader(new InputStreamReader(is));            

             response = in.readLine();

             

            logger.info("Output from NSDL "+response);

             is.close();

             in.close();

            

        } catch (UnsupportedEncodingException e) {

            String encodeException = "Unsupported Encoding Exception - " +

e.getMessage();

            logger.error(encodeException);

        } catch(Exception e) {

               logger.info("Error in invokeAction - " + e.getLocalizedMessage());

               logger.info("Error in invokeAction StactTrace - " +

e.getStackTrace());

               //e.printStackTrace();

           }


        return response;

    }

    

    public static class TrustManager implements X509TrustManager {


        public boolean isClientTrusted(X509Certificate cert[]) {

            return true;

        }


        public boolean isServerTrusted(X509Certificate cert[]) {

            return true;

        }


        @Override

        public X509Certificate[] getAcceptedIssuers() {

            return new X509Certificate[0];

        }


        @Override

        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws

CertificateException {


        }


        @Override

        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws

CertificateException {


        }

    }


    public static class HostnameVerifier implements HostnameVerifier {


        @Override

        public boolean verify(String arg0, SSLSession arg1) {

            return true;

        }


        public boolean verify(String urlHostname, String certHostname) {

            return true;

        }


    }


}





--

View this message in context: http://camel.465427.n5.nabble.com/Camel-with-SSL-and-HostNameVerifier-tp5799349.html

Sent from the Camel - Users mailing list archive at Nabble.com.