기억에 남는 인증서 유효성 에러를 정리해보려고 합니다.

오류가 발생했다는 보고를 받고 디버깅을 해보니 해당 에러가 발생합니다.

 

1.  내용

pkix apth building failed ... unable to find valid certfication path to requested target

 

2. 원인

인증서 유효성 에러인데 여러 가지 원인이 있을 수 있어서 다양한 방식으로 접근해봤습니다.

 

2.1 인증서 유효성 확인

사용하는 API 테스트 툴에는 POST MAN 테스트 툴 세팅 옵션에 SSL Certificate verification 있는데

이 옵션을 활성화하면 유효하지 않은 인증서의 경우 통신이 되지 않습니다.

어느 정도까지 체크가 가능하냐면 중개 인증서를 잘못 설정한 경우까지도 잡아내는 것을 확인했습니다.

그런데 해당 옵션으로 체크하고 검증해봐도 문제가 없었습니다.

 

2.2 open ssl 명령어로 확인

테스트 서버 상에서 open ssl 명령어를 통해서 체크를 해봐도 verification code가 정상으로 확인됩니다.

인증서 자체는 유효한 것으로 보이는데 어떤 과정에서 에러가 발생했을지 생각을 해봅니다.

 

2.3 유효한 인증서 목록 확인

브라우저 or 서버 든 유효한 CA 목록을 가지고 있습니다.

SSL Handshake 과정에서 인증서의 CA는 유효한지 체크를 하는데요.

만약 어떤 식으로 업데이트 환경이 아닌 경우 예를 들어서 브라우저는 업데이트되면서

목록이 갱신되겠지만 가끔씩 내부망 환경을 가진 클라이언트 환경에서 업데이트되지 않는 케이스를 확인했습니다.

그러면 서버 to 서버 통신 환경일 경우 당연히 서버상의 유효한 인증서 목록에 없다면 에러가 발생할 수밖에 없습니다.

keytool 유효한 인증서 목록을 확인해보니 해당 서버에서 보내는 인증서의 CA가 목록에 없습니다.

여기서 에러가 발생하게 됩니다.

여담으로 아주 드문 경우이기는 하지만 CA 목록에서 사고를 쳐서 제외되는 경우도 있습니다. 

 

2.4 해결 

2.4.1 인증서 목록에 수동 추가

가장 간단한 방법은 인증서 목록에 인증서를 추가해주면 해결됩니다.

명령어를 잘 모르겠으면 보통은 인증서 업체에 문의하면 대부분 가이드가 있고

어떻게 수동 추가하는지 안내를 해주는 편입니다.

 

2.4.2 통신 모듈을 유효성 체크하지 않게 수정

인증서 유효성 체크를 무시하게 통신 모듈을 수정해줄 수 있지만

당연히 인증서 유효성 체크가 불가능하므로 추천하는 방법은 아닙니다.

 

2.4.3 JDK 업데이트 

JAVA 서비스 환경이라면 JDK 업데이트하면서 목록에 추가될수 있습니다.

다만 앞에서 이야기한 것처럼 원래 CA 목록에 있었는데 빠지는 경우도 있기때문에

업데이트 버전에 따른 CA 목록을 확인해봐야합니다.

 

keytool CLI 환경에서 추가하는 명령어는 아래 링크를 확인해주세요.

https://www.lesstif.com/java/java-keytool-keystore-20775436.html

 

HTTPS 통신 관련해서 상세 설명은 아래 링크를 확인해주세요.

https://opentutorials.org/course/228/4894

'장애처리로그' 카테고리의 다른 글

SameSite Cookie 그리고 Proxy Error  (0) 2022.04.21

+ Recent posts