HSTSという単語を忘れがちなので記憶のためにまとめてみた。
HSTSとは
HTTP Strict Transport Securityのこと。
ざっくりいうと、クライアント端末がWEBサーバーにアクセスする際に、次回以降はポート80(HTTP)ではなくポート443(HTTPS)での接続を促すというセキュリティの仕組み。
RFC6797で規定されている。
https://www.ipa.go.jp/security/ipg/documents/tls_server_config_20200707.pdf
ApacheにおけるHSTSの構築例
HTTP→HTTPSにリダイレクトする=HSTSと思っていたが、「 次回以降はポート80(HTTP)ではなくポート443(HTTPS)での接続を促す」というところが適用のポイントらしいのでそこを考慮して設定例を記載。
今回は.htaccessを利用した設定方法を書いてみる。
.htaccessを利用できるようにする( httpd.conf の編集)
httpd.conf の設定を編集し、有効にしたいディレクトリを以下に設定し、.htaccessで好き放題設定できるようにする。
※Allowoverride=Allは結構乱暴な設定で、.htaccessで何でも設定できてしまうため適宜設定してください。
項目 | パラメーター |
設定ユーザー | root |
設定ファイル | /etc/httpd/conf/httpd.conf |
適用ディレクティブ | /var/www/foo |
AllowOverride | All |
httpd.confを設定。
vi /etc/httpd/conf/httpd.conf
以下を記述する。
/var/www/foo のディレクティブが存在する場合、対象のディレクティブ記述箇所に<AllowOverride All>を挟む。
<Directory /var/www/foo >
AllowOverride All
</Directory>
設定記述後Apacheの再起動。
apachectl configtest
service httpd restart
事前準備は以上。
.htaccessでHSTSを設定
/var/www/fooに空の.htaccessを作成。
su -から先は動作未確認。
cd /var/www/foo
touch .htaccess
su - [apacheの管理ユーザー]
chmod 660 .htaccess
以下の設定を記述。
vi .htaccess
# from http to https redirection
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# hsts setting
Header add Strict-Transport-Security "max-age=31536000"
以上。
WPのプラグインなどによっては 上の4行は動的に記述があるかも。
その場合、mod_rewrite関連の記述は不要で「 Header ~」の下りだけ記載すればOK。
参考URL



コメント