← 메인으로

Ops Log · Infra

www.csklab.site SSL 인증서 적용

포트폴리오 웹(파이썬 정적 서버, 8080)을 nginx 리버스 프록시 뒤로 옮기고, Cloudflare + Let's Encrypt로 HTTPS를 적용한 기록.

서버: AWS EC2 (ap-northeast-2) · 도메인: www.csklab.site · 2026-09-13

⚠ 진행 중 — 자동 갱신 이슈 대응 중

구성 개요

브라우저 │ HTTPS (443) ▼ Cloudflare 엣지 ── SSL 모드: Full (strict) │ 자체 Universal SSL 인증서로 클라이언트 응대 │ 자체 인증서 CN=csklab.site (Let's Encrypt 발급) │ HTTPS (443) — origin 인증서 검증 ▼ nginx (오리진, 443) │ 인증서: Let's Encrypt, CN=www.csklab.site │ proxy_pass → 127.0.0.1:8080 ▼ server.py (파이썬 정적 서버, 8080)

클라이언트와 Cloudflare 사이, Cloudflare와 오리진 사이가 서로 다른 두 개의 TLS 연결이라는 점이 핵심입니다. 별도로 인증서를 "교환"할 필요 없이, 각 구간이 각자의 공인 인증서로 암호화됩니다.

진행 단계

검증 결과

항목결과
https://www.csklab.site/200 OK
http://www.csklab.site/ (리다이렉트)301 → https
Cloudflare 엣지 인증서CN=csklab.site (Let's Encrypt, Cloudflare 발급)
오리진 인증서CN=www.csklab.site (Let's Encrypt)
인증서 만료일2026-12-12

자동 갱신

certbot 설치 시 함께 등록되는 certbot.timer(systemd)가 하루 2회 실행되며, 만료 30일 이내인 인증서만 자동으로 갱신합니다. 별도 cron 설정은 필요 없습니다.

# 상태 확인
systemctl status certbot.timer

# 실제 갱신 없이 시뮬레이션만
sudo certbot renew --dry-run

⚠ 발견된 이슈 — 갱신 dry-run 실패 (조사 중)

증상

certbot renew --dry-run 이 매번 아래와 같이 실패:

Detail: 2606:4700:3037::ac43:d2dd: Invalid response from
http://www.csklab.site/.well-known/acme-challenge/...: 522

522는 Cloudflare가 오리진 연결에 타임아웃 났을 때 나오는 에러 코드입니다.

1차 원인은 확인 및 수정 완료: 최초 발급 시 certbot이 만들어준 리다이렉트가 서버 레벨 if ($host = ...) return 301 구조였는데, nginx에서는 이 구문이 location 매칭보다 먼저 실행돼서 /.well-known/acme-challenge/ 요청까지 무조건 HTTPS로 리다이렉트시켜 버리는 문제가 있었습니다. 이를 location 기반 구조로 재작성해 로컬에서는 challenge 경로가 정상적으로 (302가 아닌) 404/200으로 응답하도록 고쳤습니다.

하지만 이 수정 이후에도 Cloudflare를 경유한 실제 dry-run은 동일한 522로 계속 실패하는 중이라, Cloudflare 엣지(특히 IPv6 경로)와 오리진 사이의 별도 이슈가 남아있는 것으로 보입니다. 다음 세션에서 이어서 조사할 예정입니다.

다음에 확인할 것

  1. Cloudflare 대시보드에서 이 존(zone)에 IPv6 관련 페이지 규칙/방화벽 규칙이 있는지 확인
  2. AWS 보안 그룹이 IPv6(::/0)도 80/443에 대해 허용하고 있는지 재확인 (현재 인스턴스 자체는 글로벌 IPv6 주소가 없음 — 오리진이 IPv6 응답을 못 하는 것이 원인일 가능성)
  3. 필요 시 HTTP-01 대신 DNS-01 챌린지(Cloudflare API 연동)로 전환하거나, 오리진 인증서를 Cloudflare Origin CA 인증서로 교체해 Cloudflare 프록시 뒤에서 갱신이 외부 HTTP 검증에 의존하지 않도록 구조를 바꾸는 방안 검토
  4. 현재 발급된 인증서는 2026-12-12까지 유효하므로 급한 장애는 아님 — 만료 전 여유 있게 해결