ページ更新日:2026/05/02
HSTS(HTTP Strict Transport Security)をApacheに設定すると、ブラウザがサイトへのアクセスを自動的に HTTPS に切り替えます。
SSL証明書のインストール後に設定することで、HTTP から HTTPS へのリダイレクト漏れを防ぎ、セキュリティを強化できます。
Nginx の場合は NginxのHSTSとTLS設定強化 をご覧ください。
WebサーバーでHSTSを有効にすると、Strict-Transport-Security レスポンスヘッダーがブラウザに送られます。
ブラウザはこのヘッダーを受信したサイトを「HSTS対応サイト」として記録し、以後 max-age で指定した期間はそのサイトに対して自動的に HTTPS でアクセスします。
2回目以降のアクセスは http:// と入力してもブラウザが自動的に https:// に書き換えるため、HTTP 経由の盗聴リスクを防げます。
HSTS設定には Apache の mod_headers モジュールが必要です。有効になっているか確認・有効化します。
# Ubuntu/Debian系 sudo a2enmod headers sudo systemctl restart apache2 # CentOS/AlmaLinux系(mod_headersは標準で有効なことが多い) # httpd.conf で LoadModule headers_module が有効になっているか確認 grep -i "headers_module" /etc/httpd/conf/httpd.conf /etc/httpd/conf.modules.d/*.conf
httpd.conf または VirtualHost 設定ファイルの <VirtualHost *:443> ブロック内に以下を追加します。
Header always set Strict-Transport-Security "max-age=31536000"
※ max-age=31536000 は1年(31,536,000秒)です。最初は短い値(max-age=300 など)でテストすることを推奨します。
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
※ includeSubDomains を付けると、www.example.com だけでなく sub.example.com などのサブドメインにも HSTS が適用されます。すべてのサブドメインが HTTPS に対応していることを確認してから追加してください。
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
※ preload を付けて https://hstspreload.org/ に申請すると、主要ブラウザの HSTS プリロードリストに登録されます。登録後は初回アクセスから HTTPS が強制されます。
HSTS と同時に TLS の古いバージョン(TLS 1.0・1.1)を無効化すると、セキュリティが大幅に向上します。
<VirtualHost *:443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt
# TLS 1.2/1.3 のみ有効化
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
# 推奨暗号スイート
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
# HSTS(1年・サブドメイン含む)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>
# HTTP → HTTPS リダイレクト
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
Apache を再起動後、curl コマンドでヘッダーを確認します。
curl -I https://www.example.com
レスポンスに以下が含まれていれば正しく設定されています:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Qualys SSL Labs でも「HSTS: Yes」として確認できます。HSTS が設定済みで TLS 1.2/1.3 のみ有効な場合、A+ グレードの取得が期待できます。
.htaccess での使用を許可している場合(AllowOverride All または AllowOverride Headers)は動作します。ただし VirtualHost 設定(httpd.conf/ssl.conf)への記述が推奨です。
関連ページ:
HSTS(HTTP Strict Transport Security)とは?設定方法と注意点
NginxのHSTSとTLS設定強化(A+達成設定例)
TLSバージョンと暗号スイートの設定ガイド
ApacheへのSSL証明書インストール手順