만족

[Apache] https 프로토콜 사용 강제하기 (HTST) 본문

[Apache] https 프로토콜 사용 강제하기 (HTST)

Backend/기타 Satisfaction 2022. 2. 26. 02:52

http 프로토콜을 강제로 https로 변경하여 사용하도록 설정해보자.

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Strict-Transport-Security

 

Strict-Transport-Security - HTTP | MDN

HTTP Strict-Transport-Security response header (종종 HSTS (en-US) 로 약칭) 는 HTTP 대신 HTTPS만을 사용하여 통신해야한다고 웹사이트가 브라우저에 알리는 보안 기능.

developer.mozilla.org

 

MDN에 의하면, Strict-Transport-Securty 헤더를 통해 클라이언트(브라우저)에게 https를 사용해야 한다고 알려줄 수 있다고 한다.

 

Strict-Transport-Security: max-age=31536000;

우리가 원하는 도메인에 대해 위 헤더를 설정함으로써 http연결이 아닌 https연결을 사용하도록 강제할 수 있다.

 

위 헤더값의 3156000은 초(seconds)로, 1년을 의미한다.

 

저 헤더값을 아파치에서 고정으로 설정하도록 해보자.

 

<VirtualHost *:443>
        # ...
        Header always set Strict-Transport-Security "max-age=3153600"
</VirtualHost>

 

대상 VirtualHost에 (443포트) Header always set Strict-Transport-Security "max-age=3153600"을 추가한다.

 

이렇게 하면 사용자가 한 번이라도 대상 도메인에 https로 접근했다면,

이후 1년 간은 http연결 시도 시 브라우저는 https로 바꿔 연결한다.

 

첫 방문자가 http로 연결한다면?

이 경우에는 어떤 방법으로든 https로 redirect시키기만 하면 된다.

 

따라서 80번포트를 사용하는 대상 VirtualHost에 대한 연결을 모두 https로 리다이렉트시켜주자.

 

<VirtualHost *:80>
        #...
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

</VirtualHost>

이렇게 하면 http 연결은 모두 https로 리다이렉팅되고

https로 접속 시 http연결을 사용하지 않도록 하는 헤더가 받아지므로

안전한 프로토콜 사용을 강제할 수 있다.

 

https://oingdaddy.tistory.com/68

 

Apache에서 HTTP > HTTPS Redirect 하는 방법

SSL을 설치를 해도 거의 대부분의 사람들은 URL을 통한 접근을 할 때 HTTP protocol로 입력을 하고 들어온다. 그렇다고 사용자들보고 꼭 우리 사이트는 HTTPS protocol을 사용하니 https://xxxx.xxxx 이렇게 들

oingdaddy.tistory.com

 



Comments