SSL 인증서 에러 조치 내용

Daniel·2024년 12월 2일
0

Back-End

목록 보기
48/48

들어가며

사내 시스템들의 인증서를 모두 갱신 후 사내 시스템 A 에서 B 시스템에 요청을 할 경우 호출이 되지 않고 아래와 같은 에러가 발생했다.

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

이에 관련해서 조치한 내용을 정리하려 한다.

왜 발생한거야?

위와 같은 오류가 발생하는 이유는 여러가지가 있다.

  • 서버에서 사용하는 인증서가 클라이언트의 신뢰 저장소(truststore)에 없거나, 신뢰할 수 있는 인증 기관(CA)에서 발급되지 않았을 경우
  • 클라이언트의 TrustStore 설정 문제

등등 위와 같은 문제로 인해 발생했다는 걸 확인하고 클라이언트(시스템 A) 의 신뢰저장소(truststore)에 서버(시스템 B) 의 인증서를 등록해 보기로 했다.
(같은 인증서를 사용해서 신경쓰지 않았는데 문제가 발생했다....)

조치 내용

서버 인증서 다운로드

클라이언트(시스템 A) 에서 서버(시스템 B) 의 인증서를 다운받기 위해 아래와 같은 명령어를 사용했다.

openssl s_client -connect <hostname>:443 -showcerts

그럼 터미널 창에 인증서가 출력되는데 내용을 복사해 .crt 파일로 클라이언트(시스템 A) 에 저장한다.

서버 인증서를 신뢰저장소(truststore) 에 추가

서버(시스템 B) 의 인증서를 클라이언트(시스템 A) 의 신뢰저장소(truststore) 에 추가 하기 위해
클라이언트(시스템 A) 의 명령창에서 아래와 같은 명령을 수행했다.

keytool -importcert -trustcacerts -file <설정한 파일 이름>.crt -keystore <keystore_file> -alias <alias>
  • <keystore_file> : 신뢰저장소(truststore) 파일 경로
  • <alias> : 인증서 식별을 위한 별칭

.crt 의 기본 비밀번호는 changeit 이다.

Note

위 방법을 통해 인증서를 등록하고 API 를 호출해보니 정상적으로 호출이 되는 것을 확인했다.
동일한 인증서를 사용해도 구성차이, 불완전한 인증서 체인 또는 일치하지 않는 도메인 이름으로 인해 문제가 발생할 수 있으므로 잘 확인해야겠다.

profile
응애 나 애기 개발자

0개의 댓글