문제 상황
특정 도메인(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 핸드셰이크
- ClientHello: 클라이언트 → WAF (암호화 방식 협상)
- ServerHello + 인증서 전송: WAF → 클라이언트
- ✅ 전송해야 할 것: [도메인 인증서 + 중간 CA 인증서]
- ❌ 실제 전송된 것: [도메인 인증서만]
- 인증서 검증: 클라이언트
- 중간 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-----
'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 |