티스토리 뷰
반응형
Spring 기반에서 Web Service로 Rest API를 개발 할때
com.sun.jersey의 Client로 개발하는 경우가 종종 있습니다.
많은 개발자가 사용중에 있습니다만, 문제는 Https를 사용 할 때는
서버인증서의 인증 문제로 SSL 오류가 발생 하게 됩니다.
보통 이러한 에러는 Client에 서버의 인증서가 없기 때문에 발생 합니디만
다음 아래와 같이 하면 인증서를 우회 시켜서 사용이 가능 합니다.
* SSL 인증서 우회
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.client.urlconnection.HTTPSProperties;
public class SSLClientHelper {
public static ClientConfig configureClient() {
TrustManager[ ] certs = 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 {
}
}
};
SSLContext ctx = null;
try {
ctx = SSLContext.getInstance("TLS");
ctx.init(null, certs, new SecureRandom());
} catch (java.security.GeneralSecurityException ex) {
}
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
ClientConfig config = new DefaultClientConfig();
try {
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(
new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
},
ctx
));
} catch(Exception e) {
}
return config;
}
public static Client createClient() {
return Client.create(SSLClientHelper.configureClient());
}
}
<strong="">Client의 생성 및 사용법은 기존 Http 일때가 차가 없으므로 별도 설명은 하지 않습니다 </strong="">
* Client 생성자
private static Client client = Client.create(SSLClientHelper.configureClient());
반응형
'개발자 이야기 > Java / Web 이야기' 카테고리의 다른 글
Node.js 이야기 1탄 (0) | 2016.06.28 |
---|---|
RestFull API 개발을 위한 사전 준비사항 (1) | 2016.03.18 |
Https Server 구현시 주의 할 점 (0) | 2015.07.01 |
JQuery를 이용하여 In Focus와 Out Focus 발생 시 CSS 조작 (0) | 2013.04.03 |
JQuery를 사용한 Image Select (0) | 2013.02.06 |
applicationContext-velocityengine-mail.xml 쉽게 사용하기 (0) | 2012.11.19 |
HttpServletResponse에서 getWriter() already Error 발생 시 주의 점 (0) | 2012.08.29 |
POI를 사용하여 Java 서블릿에서 Excel File을 Stream으로 전송하기 (0) | 2012.05.14 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- embeded
- 고흥
- 크로스컴파일
- Android
- arm
- 1회용컵
- U-Boot
- 커피컵
- 임베이디드
- 커널
- C
- cross compile
- 큐비보드
- 벌교
- 채소 키우기
- Linux
- 베란다
- CubieBoard2
- 리눅스
- 수경재배
- 열무
- kernel
- 사무실
- 상추
- 식물 키우기
- 식물키우기
- 버추얼박스
- VirtualBox
- 식물
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함