Linux환경에서 Java InstallCert를 사용하여 외부 SSL/TLS 인증서를 Import 하기.
Java를 사용하여 HTTPS로 remote 사이트에 연결 또는
인증서 없이 HttpsURLConnection을 사용하면 SSLHandshakeException 이 발생한다.
PKIX path building failed
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
여러가지 원인이 있을 수 있으나 보통은 연결하려는 remote 사이트의 인증서가 신뢰하는 인증기관 인증서 목록
(keystore)에 없기 때문이다.
해결하기 위해서는 현재 설치된 JDK의 keystore에 인증서를 생성하여 sercurity 이하에 저장해야한다.
1. 구글링 > InstallCert.Java 다운로드
2. 다운로드 경로에서 컴파일한다.
> javac InstallCert.java
구동 : hostname에 SSL인증서를 받아올 호스트를 입력해준다.
-> java -cp InstallCert [hostname]
실행을 하면 마지막에 아래와 같은 부분이 나타나게 된다
Enter certificate to add to trusted keystore or 'q' to quit: [1]
1을 눌러서 인증서 저장
인증서를 저장하면
Added certificate to keystore 'jssecacerts' using alias 'hostname'
이와 같은 메세지가 나오면서 jssecacerts 파일로 저장이 된다.
3. 인증서를 $JAVA_HOME/jre/lib/security 폴더에 해당 파일을 복사한다.
(필자는 처음부터 security에서 실행했기 때문에 복사할필요 없음)
인증서명 : jssecacerts / alias 명이 명시된다.
인증서의 기본 패스워드(certpass): changeit
4. WAS 재기동.
다른방법은
java vm 옵션으로 '-Djavax.net.ssl.trustStore=인증서 경로' 를 추가해준다.
윈도우 환경에서 로컬웹으로 작업중이라면,
위와 같은방법으로 똑같이 cmd창에서 실행해주면 된다.
'Back-end > Linux' 카테고리의 다른 글
[linux] yum daum 저장소 설정(yum install 에러 해결: Could not resolve host: None; Unknown error) (0) | 2021.02.25 |
---|---|
리눅스 퍼미션이란? Permission (chown/chmod/umask) (0) | 2021.01.20 |
[Linux] su / su - / sudo 명령어와 차이점 (0) | 2020.03.24 |
[Linux] rpm / yum 이란? (0) | 2019.03.22 |
[Linux]많이 사용하는 Linux 명령어 (0) | 2019.02.21 |