망연계 솔루션 경유하는 SSL 인증서 오류

다음과 같이 망연계 솔루션을 경유하여 웹서비스에 접속할 때 SSL 인증서 오류 (certificate has expired)가 발생하는 경우 확인해야 할 내용입니다.

  • 망연계 솔루션을 경유하지 않고, 웹 서비스에 접속하면 인증서가 정상 동작함

  • 망연계 솔루션을 경유하면 curl: (60) ssl certificate problem: certificate has expired 오류가 출력되는 상황

1. 망연계 솔루션이 인증서를 캐시하거나 중간에 프록시 역할을 수행 중인 경우

  • 프록시 역할을 수행하는 망연계 솔루션이 TLS 핸드셰이크를 중간에서 가로채고, 자신의 캐시된 오래된 인증서를 클라이언트(curl 등)에 전달할 수 있습니다.

  • 이 경우, 클라이언트는 서버가 보낸 인증서가 아니라 망연계 장비가 가진 오래된 인증서를 보고 expired 오류를 발생시킵니다.

🛠 조치 방법:

  • 망연계 솔루션(예: SecureGate, TGate, SaniTrans 등)의 인증서 캐시 기능이나 SSL Proxy 설정을 확인하고 재시작하거나 캐시를 무효화합니다.

  • 최신 인증서로 업데이트되었는지 확인합니다.

  • 필요시, TLS pass-through(중계만 하고 가로채지 않음) 모드로 설정합니다.

2. 망연계 솔루션이 자체적으로 SSL을 종단 처리(SSL termination)하고 있음

  • 이 경우, 외부 웹 서버의 인증서를 클라이언트가 직접 보지 않고, 망연계 솔루션에 설치된 인증서를 보게 됩니다.

  • 만약 이 인증서가 갱신되지 않았거나 유효기간이 지난 상태라면, curl 등에서는 certificate has expired로 인식됩니다.

🛠 조치 방법:

  • 망연계 솔루션에 설치된 인증서를 확인하고 갱신합니다.

  • 인증서 체인(루트 → 중간 → 서버 인증서)이 완전하게 구성되었는지 확인합니다.

3. 망연계 솔루션이 클라이언트 쪽에 자체 CA나 루트 인증서를 신뢰시키지 못함

  • 클라이언트가 망연계 솔루션의 중간 인증서나 루트 인증서를 신뢰하지 않으면 SSL 오류가 발생할 수 있습니다.

  • 특히 curl은 OpenSSL을 사용하므로, 시스템에 설치된 CA Bundle에 해당 인증서가 없을 경우 발생합니다.

🛠 조치 방법:

  • 망연계 솔루션의 루트 CA 또는 중간 인증서를 /etc/ssl/certs 또는 curl의 --cacert 옵션으로 지정하여 수동 신뢰를 설정할 수 있습니다.

4. 중간 인증서(Missing Intermediate Certificate)가 누락되었을 경우

  • 망연계 솔루션이 중간 인증서를 포함하지 않은 상태로 서버 인증서만 전달하면 expired 오류처럼 보일 수 있습니다.

  • 일부 클라이언트는 인증서 체인 복원이 불가능하여 오류를 발생시킵니다.

🛠 조치 방법:

🔍 추가 확인 방법

  • 다음과 같은 명령어로 문제 확인 가능:

# 망연계 경유 (오류 발생)
curl -v https://www.plura.io

# 직접 연결 (정상 작동)
curl -v --resolve www.plura.io:443:원래의IP https://www.plura.io

# 인증서 확인용
openssl s_client -connect www.plura.io:443

✨ 요약

원인
설명
조치

🔁 캐시된 인증서

망연계 솔루션이 오래된 인증서를 캐시

캐시 삭제 또는 재시작

🔒 자체 인증서 사용

망연계가 인증서를 직접 제공

망연계 장비의 인증서 갱신

❌ 인증서 체인 불완전

중간 인증서 누락 등

인증서 체인 점검

❓ 클라이언트 CA 불신

자체 루트/중간 CA 신뢰 안됨

수동으로 --cacert 지정

Last updated