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);
    }
}
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기