자바(Java)

자바 Https 어플리케이션 통신 (SSL)

xemaker 2018. 10. 26. 14:24

자바 Https 어플리케이션 통신 (SSL)


http 일 경우는 비교적 쉽게 자바로 http 통신을 할 수 있으나

https인 경우는 http와 비슷하나 아래 처럼 추가적으로 코딩을 더 해줘야 한다.


String sUrl="http://aa/update.do?emp=aa";


TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){

@Override

public X509Certificate[] getAcceptedIssuers(){

return null;

}

@Override

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{

}

@Override

public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException{

}

}};


try{

SSLContext sc=SSLContext.getInstance("SSL");

sc.init(null, trustAllCerts, new java.security.SecureRandom());

HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

}catch(Exception e){

}


HostnameVerifier hv=new HostnameVerifier(){

@Override

public boolean verify(String urlHostname, SSLSesstion session){

return true;

}

};


URL targetURL=new URL(sURL+para);

URLConnection urlConn = targetURL.openConnection();

HttpsURLConnection conn=(HttpsURLConnection) urlConn;


conn.setDoInput(true);

conn.setDoOutput(true);

conn.setUseCaches(false);

conn.setHostnameVerifier(hv);


DataOutputStream out=null;

InputStream is=null;

BufferedReader br=null;

try{

out=new DataOutputStream(conn.getOutputStream());

out.flush();

is=conn.getInputStream();

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

String inputLine;

String result="";

while((inputLine=br.readLine())!=null){

inputLine=inputLine.trim();

result=inputLine;

}

}catch(Exception e){

}