[자바] TLS, JKS 로 URL HTTP 통신하기 - 송신 및 수신
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=1.0' encoding='utf-8'?>");
sb.append("<request>")
sb.append("<user></user>");
sb.append("</request>")
String url="http://aaa.com/post.do";
URL url1=new URL(url);
HttpsURLConnection conn=(HttpsURLConnection)url1.openConnection();
conn.setHostnameVerifier(new HostnameVerifier(){
@Override
public boolen verify(String arg0, SSLSession arg1){
return true;
}
});
SSLContext sslContext=SSLContext.getInstance("TLS")
sslContext.init(null,new TruestManager[]{new X509TrustManager(){
@Override
public X509cerificate[] getAcceptedIssuers(){
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{
try{
KeyStore keyStore=KeyStore.getInstance("JKS");
String certPath=System.getProperty("java.home")+"/lib/security/aa.jks";
keyStore.load(new FileInputStream(new File(certPath)), "11".toCharArray());
TruestManagerFactory tmf=TruestManagerFactory.getInstance(TruestManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
TruestManager[] tms=tmf.getTrustManagers();
((X509TrustManager)tms[0]).checkServerTrusted(chain, authType);
}catch(Excetion e){
}
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException{
}
}}, null);
String s=sb.toString();
conn.setSSLSocketFactory(sslContext.getSocketFactory());
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type","application/xml");
conn.setRequestProperty("Content-Length", ""+Integer.toString(s.getBytes().length));
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream out=conn.getOutputStream();
out.write(s.getBytes("UTF-8"));
out.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line=null;
while((line=reader.readLine())!=null){
System.out.println(line);
}
in.close();