SSLHandshakeException: PKIX path building failed

이럴땐 이렇게|2023. 8. 11. 17:36

 

위와 같은 에러메시지가 뜬다는 건 SSL 보안 등록이 되어 있지 않다는 뜻이다.

 

브라우저가 아니라 자바 서버에서 https 요청을 보내 주려면 인증서를 추가해야 한다.

자바에서는 아래 경로에서 인증서를 저장해 사용하고, keytool 이라는 명령어로 관리할 수 있다.

  • 인증서 저장소 경로 : ${JAVA_HOME}/lib/security/cacerts
  • 현재 등록된 인증서 조회하기 : keytool -list -v -keystore ${JAVA_HOME}/lib/security/cacerts

 

1. 인증서 파일을 keystore에 import한다.

keytool -import -keystore ${인증서 저장소 경로} -file ${인증서파일 경로} -alias ${alias이름}

예시) keytool -import -keystore /../jdk-17/lib/security/cacerts -file /../../xxx.pem -alias dw_cert

 

Certificate was added to keystore 라는 메시지가 뜨면 성공

 

 

필요시 사용

1. keystore에서 cert파일을 추출한다.
keytool -exportcert -keystore ${인증서 저장소 경로} -storepass ${인증서 저장소 비밀번호} -file ${내보낼 파일명.cert} -alias ${alias이름}

예시) keytool -exportcert -keystore /../jdk-17/lib/security/cacerts -storepass ${password} -file key.cert -alias dw_cert

Certificate stored in file <key.cert> 라는 메시지가 뜨면 성공

 

2. 내보내진 cert파일을 cacerts에 등록한다.

keytool -importcert -keystore ${인증서 저장소 경로} -storepass ${인증서 저장소 비밀번호} -file ${export한 파일} -alias ${export한 파일의 alias이름}

Certificate was added to keystore 라는 메시지가 뜨면 성공

 

 

 

참고 글

https://blog.naver.com/skinfosec2000/222135874222

 

웹사이트 보안을 위한 방법, SSL이란? (feat. SSL과 HTTPS의 차이)

안녕하세요! 알기 쉽게 풀어쓴 보안 '알풀보'입니다. '알풀보'는 어려운 보안 용어와 ...

blog.naver.com

# /usr/java1.3/bin/keytool -storepasswd \
-keystore /usr/java1.3/jre/lib/security/cacerts
Enter keystore password:  changeit
New keystore password:  new-password
Re-enter new keystore password:  new-password

https://techlog.io/Server/HTTPS/nginx%EC%97%90-https-ssl-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0/

 

Nginx에 HTTPS SSL 적용하기

앞선 포스트들에서 기본적인 HTTPS개념들과 동작 방식, 그리고 로컬 API서버에 적용하는 방법을 다루어 보았습니다. 이번에는 Nginx를 기반으로 작동하는 웹 서버에 HTTPS를 적용하는 방법에 대해 알

techlog.io

https://www.lesstif.com/software-architect/pem-cer-der-crt-csr-113345004.html

 

PEM 과 CER/DER/CRT/CSR 형식 파일이란?

 

www.lesstif.com