HSTS 보안 헤더 설정은 HTTPS를 사용하는 사이트에서 한 단계 더 나아간 보안 조치입니다. HTTPS가 설정돼 있어도 사용자가 처음 http://로 접속하면 잠깐이나마 암호화되지 않은 연결이 발생합니다. 공격자는 바로 이 순간을 노려 중간자 공격(MITM)을 시도할 수 있습니다. HSTS는 브라우저에게 “이 사이트는 앞으로 항상 HTTPS만 쓰겠다”는 약속을 심어두어 이 취약한 순간을 없애줍니다. 병원처럼 환자 개인정보가 오가는 사이트에서는 반드시 설정해야 하는 헤더입니다.
브라우저가 사이트에 처음 접속할 때 서버에서 Strict-Transport-Security 헤더를 받습니다. 이 헤더를 받은 브라우저는 지정된 기간 동안 해당 도메인에 대해 무조건 HTTPS로만 접속합니다. http://로 입력해도 브라우저 자체에서 https://로 변환합니다.
덕분에 다음 공격이 차단됩니다.
server {
listen 443 ssl;
server_name 병원도메인.com;
# HSTS 헤더 추가
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# ... 나머지 설정
}
max-age=31536000: 1년간 유지 (초 단위)includeSubDomains: 서브도메인에도 적용always: 모든 응답 코드(오류 페이지 포함)에 헤더 추가적용 후 테스트:
curl -I https://병원도메인.com | grep -i strict
Strict-Transport-Security: max-age=31536000; includeSubDomains 가 출력되면 정상입니다.
preload 옵션을 추가하면 크롬, 파이어폭스의 HSTS 프리로드 목록에 등록해서 첫 접속부터 HTTPS를 강제할 수 있습니다.
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
단, 프리로드 등록 전 반드시 확인해야 할 점이 있습니다.
주의사항:
처음에는 preload 없이 먼저 적용하고, 사이트 전체가 HTTPS로 안정적으로 운영되는 것을 확인한 다음 추가하는 것을 권장합니다.
의료기관 인프라 운영 현장 경험을 바탕으로 작성하며, WavePix 운영자 (의료기관 3곳 인프라 전담)가 최종 검수합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)