サイトアイコン ex1-lab

NextCloudの管理画面でエラー「インスタンスの一部のヘッダーが正しく設定されていません~」

ubuntu_logo

ubuntu_logo

Nextcloudの警告「Strict-Transport-Security HTTPヘッダーが設定されていません」

NextCloudをインストールしましたが、管理画面で以下の警告が出ています

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

このエラーですが、Nextcloudの警告にある「Strict-Transport-Security HTTPヘッダーが設定されていません」という内容は、HSTS(HTTP Strict Transport Security)を設定して、HTTPSを使用する設定にすれば警告は解消されます

HSTSとは?

HSTS(HTTP Strict Transport Security)は、Webブラウザに「このサイトには常にHTTPSでアクセスすべき」と伝えるためのHTTPレスポンスヘッダーです。

これにより、以下のようなセキュリティ強化が期待できます:

HSTSの設定方法

設定するヘッダーの書式は以下のようになります

Strict-Transport-Security: max-age=15552000; includeSubDomains

ディレクティブ説明
max-age=秒数HSTSの有効期間(秒)。例: 15552000秒(180日)
includeSubDomainsサブドメインにもHSTSを適用する(任意)
preloadChromeの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の管理画面をリロードすると、警告が消えているはずです。

モバイルバージョンを終了