서버 팁

HSTS 설정하기(https 강제하기)

페이지 정보

작성자 PWneo
댓글 0건 조회 57회 작성일 20-11-07 02:50

본문

1. HSTS(HTTP Strict Transport Security)란?

 - 크로미움(https://www.chromium.org) 계열 브라우저에서 보안에 취약한 HTTP 접속을 강제로 HTTPS 연결로 전환하도록 설정하는 기능입니다.


2. 규칙

 - 모든 http연결을 https로 리디렉션 시켜야 합니다.

 - https에서 Strict-Transport-Security 헤더를 클라이언트로 전송해야 합니다. http에서는 헤더를 전송하지 않아야 합니다.

 - max-age는 설정값의 저장기간(초)입니다. 구글에서 제안하는 최소 기간은 1년(31536000) 이상입니다.

 - includeSubdomains를 추가하면 모든 서브도메인에 대해서도 HSTS 설정을 활성화 합니다. 만약 서브도메인에 SSL 인증서를 설치하지 못하는 상황이 발생한다면 해당 서브도메인으로는 접속이 불가능하므로 주의해야 합니다.

 - https://hstspreload.org 에서 설정 결과를 테스트하고, 크로미움의 HSTS 리스트에 추가하도록 신청할 수 있습니다.


3. 예제

 - Apache의 .htaccess 에 추가

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

</IfModule>

<If "%{HTTPS} == 'on'">

<IfModule mod_headers.c>

     Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"

</IfModule>

</If>

 - Nginx의 설정파일

server {

       listen         80;

       server_name    example1.com example2.com;

       return         301 https://$host$request_uri;

}


server {

       listen         443 ssl;

       server_name    example1.com example2.com;

       ...

       add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

}

등록된 댓글이 없습니다.