HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기

2025. 10. 14. 14:57·Linux
728x90

문제 상황

특정 도메인(https://deslumieres.co.kr/theatre)에 접속할 때, 일부 사용자들에게만 HTTPS 인증 오류가 발생하는 현상이 보고되었습니다. 모든 사용자가 아닌 불특정 다수에게만 발생한다는 점입니다.


가설 제기 및 가설 검증 분석 과정

가설 1: HSTS 설정 문제?

제일 최근에 설정한 것이 HSTS 인데 이로 인해서 갑작스럽게 근처 사용자에게 해당 증상이 발생하였습니다.

HSTS(HTTP Strict Transport Security)는 브라우저에게 "이 도메인은 무조건 HTTPS로만 접속하라"고 강제하는 보안 헤더입니다.

Strict-Transport-Security: max-age=31536000; includeSubDomains

 

  • HSTS는 정상적인 SSL 인증서가 갑자기 특정 사용자에게만 작동하지 않게 만들지 않는다.
  • HSTS 문제라면 모든 사용자에게 동일하게 발생되었어야 한다.

가설 2: 인증서 체인 문제

결국 핵심은 인증서 체인(Certificate Chain)에 있었습니다.

OPENSSL를 이용해서 인증서를 확인하였습니다.

 

웹 방화벽(WAF)의 인증서 설정을 확인한 결과, 도메인 인증서만 등록되어 있고 중간 인증서(체인 인증서)가 누락....

인증서 발급 시, 웹 방화벽 인증서를 별도로 전달받는데 보통 전달을 받을 때 도메인 인증서 + 체인인증서를 합해서 전달 받았었습니다.

그러나 갑자기 이전과 다르게 전달 받고 확인하지 못해 누락.... (내...잘못 ㅠㅠ)


왜 특정 사용자에게만 발생했을까?

이 현상의 핵심은 클라이언트의 인증서 캐시 여부와 TLS 종단에 있습니다.

정상 접속 사용자 브라우저/OS에 이미 보유 ✅ 정상 연결
오류 발생 사용자 캐시 없음 ❌ "인증되지 않은 인증서" 오류

 

TLS 핸드셰이크 과정

우리 인프라에서 TLS 종단(Termination)은 WAF에서 이루어집니다

클라이언트 --[HTTPS]--> L4:443 --[포워딩]--> WAF --[HTTP]--> NGINX:12000
                                              ↑
                                         TLS 종단 지점

 

정상적인 TLS 핸드셰이크

  1. ClientHello: 클라이언트 → WAF (암호화 방식 협상)
  2. ServerHello + 인증서 전송: WAF → 클라이언트
    • ✅ 전송해야 할 것: [도메인 인증서 + 중간 CA 인증서]
    • ❌ 실제 전송된 것: [도메인 인증서만]
  3. 인증서 검증: 클라이언트
    • 중간 CA 캐시 있음 → 검증 성공
    • 중간 CA 캐시 없음 → 검증 실패

인증서 체인의 역할

도메인 인증서 WAF에서 전송 서버의 신원을 증명
중간 CA 인증서 WAF에서 전송 도메인 인증서와 루트 CA를 연결
루트 CA 인증서 클라이언트가 보유 최종 신뢰 검증
루트 CA (신뢰됨)
  └─ 중간 CA ← 여기가 누락됨!
      └─ 도메인 인증서

검증 과정

1. WAF 비활성화 테스트

문제가 발생하는 도메인을 WAF에서 비활성화했을 때는 오류가 발생하지 않았습니다. 이는 문제가 WAF의 인증서 설정에 있음을 확인시켜 주었습니다.

 

2. 인증서 설정 확인

  • ❌ 도메인 인증서만 등록됨
  • ❌ 중간 CA 인증서(체인 인증서) 누락

해결 방법

WAF에 도메인 인증서와 중간 CA 인증서를 모두 포함한 전체 체인을 등록해야 합니다.

-----BEGIN CERTIFICATE-----
[도메인 인증서]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[중간 CA 인증서]
-----END CERTIFICATE-----

 

728x90

'Linux' 카테고리의 다른 글

[NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)  (1) 2025.08.28
bash_profile, bashrc 차이점  (1) 2025.05.14
All available gssapi mechanisms failed 에러가 나는 이유  (0) 2025.04.16
pam_tally2 실패 횟수 자동 증가 증상  (0) 2025.04.16
SFTP 특정 디렉토리만 접근 가능하도록 하는 방법 (sftp chroot)  (2) 2024.10.29
'Linux' 카테고리의 다른 글
  • [NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)
  • bash_profile, bashrc 차이점
  • All available gssapi mechanisms failed 에러가 나는 이유
  • pam_tally2 실패 횟수 자동 증가 증상
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Linux (43)
      • Windows (0)
      • Network (5)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Language (1)
      • Etc (5)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기
    상단으로

    티스토리툴바