JAVA에서 SSL Client를 구현하고 인증서 없이 접근 할 수 있도록 구현한 예제 입니다.

public class URLUtils {
 
 private static boolean trusted = false;

 public static HttpURLConnection getConnection(URL url) throws IOException {
 
  HttpURLConnection con = null;
  boolean https = url.getProtocol().equalsIgnoreCase(“https”) ? true : false;
 
  if (https) {
   if (!trusted) trustAllHosts();
   con = (HttpsURLConnection) url.openConnection();
   ((HttpsURLConnection) con).setHostnameVerifier(DO_NOT_VERIFY);
   
  } else {
   con = (HttpURLConnection) url.openConnection();
  }
 
  return con;
 }
 
 private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
  @Override
  public boolean verify(String hostname, SSLSession session) {
   return true;
  }
 };
     
 private static void trustAllHosts() {
        
  trusted = true;
 
  // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
         
         public java.security.cert.X509Certificate[] getAcceptedIssuers() {
       return new java.security.cert.X509Certificate[] {};
      }
 
      @Override
      public void checkClientTrusted (java.security.cert.X509Certificate[] chain, String authType)
              throws java.security.cert.CertificateException { }
 
      @Override
      public void checkServerTrusted (java.security.cert.X509Certificate[] chain, String authType)
              throws java.security.cert.CertificateException { }
      
        } };

        // Install the all-trusting trust manager
        try {
         SSLContext sc = SSLContext.getInstance(“TLS”);
         sc.init(null, trustAllCerts, new java.security.SecureRandom());
         HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {
         e.printStackTrace();
        }
    }

}

Leave a Reply

Your email address will not be published. Required fields are marked *