Tutorials & Tips/WSO2 Identity Server

2-4. PKIX 에러 발생 시 해결방법

PHAROS IAM 2022. 5. 13. 14:30

샘플소스를 WSO2 IS와 연결하다 보면, 각 URL과 서버로부터 발급받은 Client ID / Client Secret 을 올바르게 입력했음에도 불구하고 정상적으로 기능하지 않는 경우가 있습니다.

 

가령, 클라이언트에 접근한 브라우저는 파라미터를 포함한 URL만 남겨둔 채 하얀 화면을 띄우거나, 혹은 깜빡거리며 다시 메인페이지로 돌아가고. Tomcat과 같은 연관서버의 로그에서는 'PKIX path building failed' 라는 에러를 출력하는 현상입니다. 다음 사진은 가상환경 내에서 JDK 1.7 기반으로 작성된 샘플 소스파일을 Tomcat에서 실행하고, 가상환경의 WSO2 IS를 IDP로 사용한 경우입니다.

 

*샘플소스 연결 참고링크

2-1. OIDC 연동 - JDK 기반 소스 :: Better than Management More than Control (tistory.com)

 

 

 

<그림 1> 샘플 소스가 정상 로그인 시 Tomcat에서 출력되는 로그
<그림 2> PKIX 에러 발생 예시

해당 경우는 로그인은 정상 진행되었으나, 특정 페이지로 리다이렉트 중 해당 페이지와 관련된 인증서 정보의 부재로 나타나는 에러입니다. 해당 에러는 서버가 참조중인 인증서 목록에 사용하려는 도메인 정보가 담긴 인증서를 추가해주어 해결이 가능합니다. 가령, 위 예시의 경우 Tomcat이 참조하는 Java의 신뢰하는 인증서 목록인 'cacert' 에 해당 도메인과 관련된 인증서를 추가해줘야 합니다.

 

1. 인증서 관련 명령어

다음은 인증서 생성 및 등록 과정에서 사용되는 명령어입니다. 

1-1부터 1-6까지 순차적으로 적용하며, 잘못된 인증서를 입력했을 시 1-7의 과정을 수행하여 다시 반복합니다.

 

적용 이후 '인터넷 사용기록 삭제' 를 통해 쿠키 및 기타 정보를 초기화 후, 로그인을 재시도합니다.

 

1-1. 도메인 정보를 담은 인증서 생성

keytool -genkey -alias <설정할 alias 명> -keyalg RSA -keysize 2048-keystore <JKS 파일명>.jks -dname "CN=<hostname>, OU=<organizational_unit>,O=<organization>,L=<Locality>,S=<State/province>,C=<country_code>"-storepass <설정할 비밀번호> -keypass <비밀번호 확인> -ext SAN=<추가하려는 도메인> -ext ExtendedKeyUsage=serverAuth -validity 825

예시

keytool -genkey -alias newcert -keyalg RSA -keysize 2048 -keystore newkeystore.jks -dname "CN=wso2.my.com, OU=Is,O=Wso2,L=SL,S=WS,C=LK" -storepass wso2carbon -keypass wso2carbon -ext SAN=dns:wso2.my.com -ext ExtendedKeyUsage=serverAuth -validity 825

 

1-2. 추가하려는 인증서의 alias명 확인

keytool -list -v -keystore <추가할JKS>

예시

keytool -list -v -keystore newkeystore.jks

 

1-3. Cer 파일 생성 (jks -> cer)

keytool -export -keystore <추가할JKS> -alias <추가할JKS 내부 인증서의 alias명> -file <생성할 파일명>.cer

예시

keytool -export -keystore newkeystore -alias newcert -file wso2external.cer

 

1-5. Cer 파일 추가 (jks <- cer)

** 해당 과정에서 -alias 옵션을 주지 않을 시, 대상 JKS에는 해당 인증서가 'mykey' 라는 alias명으로 추가됩니다.

keytool -import -keystore <대상JKS> -file <추가할CER> -alias <새로추가할 alias명>

예시

keytool -import -keystore cacerts -file wso2external.cer -alias mycert

 

1-6. 입력된 인증서 확인 (jks)

keytool -list -v -keystore <대상JKS> -alias <확인할 인증서의 alias명>

예시

keytool -list -v -keystore cacerts -alias mycert

 

1.7 추가한 인증서 삭제

keytool -delete -alias <삭제할 alias명> -keystore <삭제대상이 포함된 JKS>

예시

keytool -delete -alias mykey -keystore cacerts

 

 

 

 

2. 참고링크

 

Changing the hostname - WSO2 Identity Server Documentation

 Changing the hostname This section guides you through changing the hostname of WSO2 Identity Server. Change the hostname Server hostname for internal API calls, is by default configured as localhost. This configuration is utilized to build the internal

is.docs.wso2.com

 

Adding WSO2 public certificate to Java Certificate Store

When using WSO2 Identity Server to provide OpenID Connect based SSO, you may encounter the following error, javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path…

nadeesha678.wordpress.com