만족
[Apache] https 프로토콜 사용 강제하기 (HTST) 본문
[Apache] https 프로토콜 사용 강제하기 (HTST)
Backend/기타 Satisfaction 2022. 2. 26. 02:52http 프로토콜을 강제로 https로 변경하여 사용하도록 설정해보자.
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Strict-Transport-Security
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
'Backend > 기타' 카테고리의 다른 글
[Apache] prefork에서 event 기반 mpm으로 변경하기 (0) | 2022.10.30 |
---|---|
[Apache] Uncaught Error: Call to undefined function apache_request_headers() (0) | 2022.09.25 |
[Apache] Letsencrypt로 ssl 인증서 발급 및 등록하기와 인증서 갱신 문제 (0) | 2021.11.08 |