Nextcloudの警告「Strict-Transport-Security HTTPヘッダーが設定されていません」
NextCloudをインストールしましたが、管理画面で以下の警告が出ています
インスタンスの一部のヘッダーが正しく設定されていません –
Strict-Transport-SecurityHTTPヘッダーが設定されていません(少なくとも15552000秒に設定する必要があります)。セキュリティを強化するために、HSTSを有効にすることを推奨します。 詳細については、ドキュメント↗を参照してください。

このエラーですが、Nextcloudの警告にある「Strict-Transport-Security HTTPヘッダーが設定されていません」という内容は、HSTS(HTTP Strict Transport Security)を設定して、HTTPSを使用する設定にすれば警告は解消されます
HSTSとは?
HSTS(HTTP Strict Transport Security)は、Webブラウザに「このサイトには常にHTTPSでアクセスすべき」と伝えるためのHTTPレスポンスヘッダーです。
これにより、以下のようなセキュリティ強化が期待できます:
- 初回アクセス後は常にHTTPSで通信(HTTPに戻らない)
- 中間者攻撃(MITM)のリスクを低減
- サイト運営者がHTTPSへの完全移行を徹底できる
HSTSの設定方法
設定するヘッダーの書式は以下のようになります
Strict-Transport-Security: max-age=15552000; includeSubDomains
| ディレクティブ | 説明 |
|---|---|
max-age=秒数 | HSTSの有効期間(秒)。例: 15552000秒(180日) |
includeSubDomains | サブドメインにもHSTSを適用する(任意) |
preload | ChromeのHSTSプリロードリストへの登録用(慎重に) |
Apacheでの設定方法
HTTPS (SSL) 用 VirtualHost に以下を追記します。
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
# HSTS ヘッダーの設定(180日 + サブドメイン)
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
apacheを再起動します
sudo systemctl restart httpd
Nginxでの設定方法
HTTPS(ポート443)でアクセスされる server ブロックに、次の1行を追加します
server {
listen 443 ssl http2;
server_name example.com;
# HSTS の追加
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
index index.php index.html;
}
nginxを再起動します
$ sudo systemctl restart nginx
設定後にNextcloudの管理画面をリロードすると、警告が消えているはずです。


コメント