ISSUE Point

AppGW 인증서 교체 후 백엔드 서버 확인불가(502Error) 발생

 

상기 화면은 백엔드 상태에서 확인시 백엔드 서버에 올라가있는 인증서와 AppGW에 적용 된 인증서간 인증이 되지 않아 통신에 실패했다는 내용을 담고 있습니다.

 

Solution

AzureAppGW는 호스트머신이 Windows 시스템이므로 FullChain PFX 인증서를 올립니다.

고객사의 백엔드 서버 역시 Windows IIS를 사용중이므로 동일한 PFX 인증서를 업로드 하였으나 통신이 되지 않는 상황이었습니다.

기존 인증서로 원복을 하면 정상 통신이  되지만 신규 인증서 적용시 통신이 되지 않는 상황입니다.

 

[인증서 검증]

통신 연결 상태와 오류 메시지상 해당 건은 백엔드 서버에 적용된 Chain 인증서에 포함된 중간 인증서가 AppGW의 백엔드 세팅에 적용한 RootCA인증서로 서명한 인증서가 아니어서 발생하는 것으로 추정하여 하기 절차에   따라 인증서 검증을 수행해 보았습니다.

1. Windows 환경에서 인증서 파일을 열어서 확인하는 방법 :

   -> 루트(CER) 인증서와 백엔드 체인(CRT) 인증서를 모두 오픈

   -> 백엔드 체인(CRT) 인증서 내, 중간 인증서 선택 후, 인증서 보기 선택

   -> 중간 인증서의 <발급자>와, 루트 인증서의 <주체>가 일치하는지 확인

 


2. Windows 환경에서 루트(CER)인증서 부분을 비교 & 대조하는 방법 :

    -> 루트(CER) 인증서 파일을 메모장(.txt)으로 열어서, 문자열을 확인

    -> Windows 에서 openssl 설치 후, 백엔드 서버쪽(체인 CRT 인증서)으로 openssl 응답을 받아온 다음, 루트(CER)인증서 문자열 부분 확인

    -> 두 파트의 문자열이 일치하는지 확인


3. 원격 백엔드 서버로 openssl 요청 후, 응답 결과 분석 방법

    -> 아래 예시와 같이, 루트인증서 -> 중간인증서 -> 서버인증서 방향으로, 체인 구성 확인

    -> 이때, 루트 인증서의 s(주체) 부분이, 중간 인증서의 i(발급자) 부분과 일치하는지 확인

    -> 또한, 중간 인증서의 s(주체) 부분이, 서버 인증서의 i(발급자) 부분과 일치하는지 확인


검증 결과 AppGW의 백엔드 인증서 유효성 검사 유형이 프라이빗 CA를 선택한 상황에서, AppGW에 업로드 된 인증서는 모든 단계의 체인 인증서가 잘 담겨있는 Full Chain 인증서였으나 백엔드 서버에 바인딩 된 인증서가 중간 Chain인증서가 없는 인증서라서 인증서 검증이 되지 않아  발생한 이슈로 최종 확인 하였습니다.

 


백엔드 http 유효성 검사 유형에 공용CA(Well-Known) 를 사용하는 경우 AppGW에서는 백엔드 인증서의 발급자(Issuer)를 확인할 때 공인 인증기관(Well-Known) 명칭으로 확인되면 문제가 없는 인증서로 인지하게 됩니다.
 그러므로 현재 백엔드서버에 적용되어있는 인증서에 RootCA와 중간 인증서 체인이 누락되어 있다 하더라도 세번째 중간 인증서의 발급자(Issuer)가 공인 인증기관(Well-Known)으로 확인되어 연결처리가 되는 원리입니다.

고객사의 과거 운영 이력으로 인해 Private CA 인증서를 직접 업로드하여 사용 중인 환경이었으며, 로컬PC에 인증서를 설치하여 확인했을시에는 인증서 순서가 정상이었으나 실제로 CER 인증서로는 중간체인이 빠져있는 상태로, 해당 환경에서 발생한 본 이슈는 백엔드 IIS 바인딩에 올바른 순서의 Full Chain 인증서가 적용되어 있었다면 발생하지 않았을 것으로 판단됩니다.

이번 사례는 CSP 측과 서버 측 모두에 인증서를 적용해야 하는 구성에서는,
 각각 업로드되는 인증서의 실제 내용과 체인 구성 상태가 정상적인지 사전에 반드시 확인해야 함을 시사하는 트러블슈팅 사례로 볼 수 있습니다.