JSOUP SSL 인증서 문제가 발생할 때

Jake Seo·2020년 12월 14일
0

문제해결잡지식

목록 보기
3/20

JSOUP SSL ERROR

JSOUP을 이용하다가 https://으로 시작하는 URL에 대해 connect 메소드를 호출하면, javax.net.ssl.SSLHandshakeException 에러가 송출된다.

해결 방법은 2가지가 있다.

유효성 체크 비활성화

아래와 같은 setSSL 메소드를 만들어주고 실행하는 것이다.

public static void setSSL() throws NoSuchAlgorithmException, KeyManagementException {
		TrustManager[] trustAllCerts = new TrustManager[] { 
				new X509TrustManager() {
					@Override
					public X509Certificate[] getAcceptedIssuers() {
						// TODO Auto-generated method stub
						return null;
					} 
					@Override
					public void checkClientTrusted(X509Certificate[] chain, String authType)
							throws CertificateException {
						// TODO Auto-generated method stub
						
					}
					@Override
					public void checkServerTrusted(X509Certificate[] chain, String authType)
							throws CertificateException {
						// TODO Auto-generated method stub	
					}
				} 
			}; 
		SSLContext sc = SSLContext.getInstance("SSL"); 
		sc.init(null, trustAllCerts, new SecureRandom()); 
		HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { 
			@Override 
			public boolean verify(String hostname, SSLSession session) {
				return true; 
			} 
		}); 
		HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
	}

위의 setSSL() 메소드는 SSL 인증서의 유효성 체크를 진행하지 않고, 유효성 체크를 비활성화 하는 방식으로 SSL에 접근하는 것이다.

서버의 인증서를 자바 KeyStore에 저장하기

또 다른 방법으로는 서버 인증서를 자바 KeyStore에 저장하는 방법이 있는데,

Portecle GUI등의 툴을 이용하여 해당 사이트의 인증서를 다운로드할 수 있다.

다운받은 뒤에는 $JAVA_HOME/lib/security/cacerts 파일을 열어서 인증서를 추가해주면 된다.

열람 시에 기본 암호는 changeit으로 설정되어 있다.

참고자료 : https://lee1535.tistory.com/24

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글