본문으로 건너뛰기
AZ Tools

HSTS 헤더 빌더

Strict-Transport-Security 헤더 구성 — max-age·includeSubDomains·preload, preload 리스트 자격 실시간 체크.

프리셋
응답 헤더
Strict-Transport-Security: max-age=31536000; includeSubDomains
Preload 리스트 자격자격 없음
  • ✓max-age ≥ 31536000 (1년)
  • ✓includeSubDomains 켜짐
  • ×preload 디렉티브 켜짐

모든 HTTPS 응답에 적용. 브라우저가 본 가장 오래된 매칭 정책만 강제 적용.

사용법

  1. HSTS 처음 켤 땐 롤아웃 프리셋(5분) — 문제 시 되돌리기 쉬움.
  2. 안정되면 운영 프리셋(1년 + includeSubDomains)로.
  3. 모든 서브도메인이 영구 HTTPS 작동 확인 후에만 preload — preload 해제는 수개월.

자세한 설명

펼치기

몇 가지 토글을 Strict-Transport-Security 헤더로 바꿔 줍니다. 이 헤더는 모든 브라우저에게 해당 도메인에서 HTTPS를 고수하라고 지시합니다. 프리셋 세 가지가 있습니다. 새 정책을 시험하는 5분짜리 창, includeSubDomains를 포함한 1년짜리 상식적인 운영 설정, 그리고 HSTS 프리로드 목록이 요구하는 2년 이상 구성입니다. 설정이 크로미움의 프리로드 제출 요건에 맞으면 적격 표시가 켜져서 적용해도 되는지 알 수 있습니다.

HSTS는 브라우저가 기억하는 것이고, 그래서 max-age는 설정이 아니라 약속입니다. 방문자가 헤더를 한 번 보고 나면 그 브라우저는 타이머가 끝날 때까지 해당 호스트에 대해 평문 HTTP를 거부하며, 여러분이 되돌아가 그 기간을 줄일 수 없습니다. max-age=31536000을 내보낸다는 것은 오늘 방문한 모든 사람에게 1년간 HTTPS를 강제한다는 뜻이고, 내일 마음이 바뀌어도 마찬가지입니다. 5분 프리셋은 그런 대가 없이 새 정책을 시험하라고 있는 것이며, 철회하는 방법은 영향받은 브라우저 전부가 볼 만큼 오래 max-age=0을 내보내는 것입니다.

이 헤더는 설계상 평문 HTTP에서 무시되므로, 첫 방문이 아니라 두 번째 방문을 보호합니다. 호스트 이름만 입력한 사용자는 리다이렉트가 브라우저에 규칙을 가르치기 전에 여전히 평문 요청을 한 번 보내고, 망 위의 공격자가 노리는 것이 바로 그 요청입니다. 프리로드는 정확히 그 틈에 대한 답입니다. 브라우저가 목록을 함께 배포하므로 맨 처음 요청부터 HTTPS로 갑니다.

includeSubDomains는 미처 생각하지 못한 이름까지 닿습니다. 내부 도구, 인증서가 없는 낡은 장비, 헤더를 내보낸 뒤에 만든 호스트를 포함해 모든 서브도메인을 덮습니다. 그 도메인 아래에서 HTTPS를 제공할 수 없는 것은 타이머가 살아 있는 동안 그 브라우저에서 닿을 수 없게 됩니다.

프리로드는 하는 것보다 되돌리는 것이 훨씬 어렵습니다. 제거는 수동 요청이고, 그 뒤 브라우저 릴리스가 반영해 나가기를 기다려야 하는데 단위가 달입니다. 현재와 앞으로의 모든 서브도메인이 HTTPS를 제공할 것이 확실할 때만 도메인을 제출하십시오.

자주 묻는 질문

max-age가 실제로 뭐 함?

브라우저에 "이 도메인은 HTTPS 전용"을 그 초만큼 기억하라고 지시. 메모리 유지되는 동안, 브라우저는 도메인으로 평문 http 내비게이션 거부, 전송 전 https로 업그레이드.

preload 되돌릴 수 있음?

느리게. Chromium preload 리스트 제출은 쉬움; 제거는 별도 요청 필요, 모든 브라우저 릴리스 전파에 수개월. 모든 서브도메인 HTTPS 작동 확신 전엔 preload 켜지 마.

첫 방문에서는 이 헤더가 무시되는 이유는?

브라우저는 HTTPS 요청을 한 번 끝낸 뒤에야 정책을 알게 되고, 평문 HTTP로 전달된 헤더는 설계상 무시하기 때문이다. 그러지 않으면 네트워크상의 공격자가 헤더를 심을 수 있다. 그래서 HSTS는 재방문자를 보호하지 첫 요청을 보호하지 않고, 그 빈틈을 메우려고 프리로드 목록이 있다. 어느 쪽이든 HTTP에서 HTTPS로의 영구 리디렉션은 여전히 필요하다.

includeSubDomains는 실제로 무엇을 약속하는 건가?

그 도메인 아래의 모든 호스트다. 잊고 있던 것까지 포함된다. 오래된 인트라넷 이름, 스테이징 서버, 협력사 CNAME 등 아직 HTTP만 쓰는 서브도메인은 그 헤더를 본 브라우저에서 접근 불가가 된다. 켜기 전에 서브도메인 목록을 훑어라. 그리고 이 약속은 마음을 바꿀 때까지가 아니라, 공표한 max-age 동안 지속된다.

관련 도구