1. 개요
JDK 1.7 ~ 1.8을 사용하는 경우는 매우 드물다. 보통 레거시 서비스는 아직도 노후화 진행 중인 곳은 JDK 1.5 그나마 나은 곳은 1.6을 사용한다.
물론 고도화를 진행하면 보편적으로 1.8을 사용하는 추세이며, 1.7로 ...하는 곳은 설마 없겠지라 굳게 믿어본다.
2. 작업
JDK 1.6에서는 TLSv1.2를 지원하지 못해 각종 TLS 통신시 정말 많은 이슈가 발생된다. 이에따라, JDK 1.6 에서 bouncycastle 을 이용하여 TLSv1.2가 동작한다해도 테스트 코드를 만들기 매우매우 귀찮다.
그래서 적어본다.
package ;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.conn.ssl.TrustAllStrategy;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
public class TestProxy {
public static void main(String[] args) throws IOException, URISyntaxException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
String commonHome = System.getProperty("common.home");
if (StringUtils.isBlank(commonHome)) {
System.out.println("commonHome is Blank");
System.exit(-1);
}
ProxyConfiguration proxyConfiguration = new ProxyConfiguration();
List<String> list = FileUtils.readLines(new File(commonHome + File.separator + "proxy.settings.yml"));
for (int i = 0; i < list.size(); i++) {
if (StringUtils.indexOf(list.get(i), "#") == 0) {
continue;
}
list.set(i, StringUtils.replace(list.get(i), "\"", ""));
String[] array = StringUtils.split(list.get(i), "\\: ", 2);
if (StringUtils.equalsIgnoreCase("proxyServiceURL", array[0])) {
proxyConfiguration.setProxyServiceURL(array[1]);
}
if (StringUtils.equalsIgnoreCase("proxyData", array[0])) {
proxyConfiguration.setProxyData(array[1]);
}
if (StringUtils.equalsIgnoreCase("method", array[0])) {
proxyConfiguration.setMethod(array[1]);
}
}
HttpClient httpClient = HttpClients
.custom()
.setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
.setSSLHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
})
.build();
HttpRequestBase requestBase = null;
if (StringUtils.equalsIgnoreCase("POST", proxyConfiguration.getMethod())) {
requestBase = new HttpPost();
((HttpPost) requestBase).setEntity(new StringEntity(proxyConfiguration.getProxyData()));
} else {
requestBase = new HttpGet();
}
URI uri = new URI(proxyConfiguration.getProxyServiceURL());
requestBase.setURI(uri);
HttpResponse response = httpClient.execute(requestBase);
String resData = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
System.out.println("response : " + resData);
}
}
'Programming > 기본 (Baisc)' 카테고리의 다른 글
[티맥스][Tmax] 미들웨어(MIddleware) TMAX JEUS 프로세스 모니터링 (0) | 2022.04.25 |
---|---|
[JAVASCRIPT][JS] UserAgent 모바일 및 IOS 여부 Validate (0) | 2022.04.25 |
[Protocol][SMTP] SMTP 상태 코드 모음 (0) | 2022.04.10 |
[MariaDB][마리아디비][Mysql][Error-1236] Replication Active Stand By 구성시 장애 대응 (0) | 2022.04.03 |
[Git][깃][자동 push][Git push] Git 자동 Push (0) | 2022.04.03 |