1. 증상

 - java에서 HTTPS로 Remote Site에 연결할 경우 아래와 같은 Exception이 발생한다.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


2. 원인

 - $JAVA_HOME/jre/lib/security 폴더(인증기관 인증서 목록(keystore)) 내에 접속하고자 하는 IP or HOST의 SSL 서버에서 유효한 인증서가 존재하지 않을 경우 발생함.


3. 해결

 - 아래 소스를 복사해서 넣는다.



 - 또는 아래 링크를 통해 소스를 받는다.

git clone https://gist.github.com/64ca41fe18ae1ed85659c49adb866d3f.git

 

 - InstallCert.java를 컴파일 한다.

cd  ./InstallCert

javac InstallCert.java 

 

 - InstallCert.class를 실행한다.

java -cp ./ InstallCert  IP or HOST(ex. google.com)


 - 아래 메시지가 나오면 1을 눌러 저장한다.

Enter certificate to add to trusted keystore or 'q' to quit: [1]


 -아래 메시지와 같이 나오면 저장된거다.

Added certificate to keystore 'jssecacerts' using alias 'IP or HOST(ex. google.com)'


 - 해당 파일을 아래 경로로 복사해 넣는다.

$JAVA_HOME/jre/lib/security


4. TIP

 - $JAVA_HOME/jre/lib/security 하위로 복사하지 않고 소스에서 바로 임포트 시킬수도있다.

System.setProperty("javax.net.ssl.trustStore", "인증서 경로");


'프로그래밍 > JAVA' 카테고리의 다른 글

Java에서 Tuple 사용하기.  (0) 2018.04.11
try-catch-resources  (0) 2018.04.11
public static void main(String[] args){}  (0) 2018.04.03
javax.net.ssl.SSLHandshakeException에 대한 해결방법  (0) 2017.02.14
websocket 사용 간단 채팅  (0) 2016.08.23
URL Image DownLoad  (0) 2016.08.14

+ Recent posts