web-dev-qa-db-ja.com

Apache 2.4-HSTSヘッダーを無効にする

Ubuntu 18.04でVagrantボックスをセットアップし、Apache 2.4.29をインストールしました。次のような新しいconfファイルを作成して有効にしました。

<VirtualHost *:80>
    ServerName Django.dev
    ServerAlias www.Django.dev
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

何らかの理由で、Django.devを呼び出そうとすると、ApacheがHSTSヘッダーで応答します。

HSTS response header

これがどこから来たのか私にはわかりません。 Apache2.confにも000-default.confにもそのようなヘッダーセットはなく、mod_sslも有効にしていません。

不思議なことに、IPを直接呼び出すと、すべてが期待どおりに機能します。 Django.devにpingを実行すると、まったく同じIPに解決されます。

HSTSを無効にする方法または場所を知っている人はいますか?私は途方に暮れていて、この問題を解決するために何時間も無駄にしています。

6
simon

HSTSポリシーは、max-ageディレクティブで指定された秒数の間、ブラウザーによってキャッシュされます( RFC 6797、6.1.1 )。 Webサーバー構成からヘッダーを削除しても、ポリシーはキャッシュから削除されません(プリロードリストも送信されている場合)ため、ポリシーを既にキャッシュしているすべてのブラウザーで307 Internal Redirectsが発生し続けます。

RFC 6797、5. で指定されているとおり:

指定されたHSTSホストのみが、発行されたHSTSポリシーを更新または削除できます。これは、Strict-Transport-Security HTTP応答ヘッダーフィールドをUAに送信して、ポリシーの継続時間とサブドメインの適用可能性の新しい値を設定することで実現します。したがって、UAはHSTSホストに代わって「最新の」HSTSポリシー情報をキャッシュします。ゼロの期間を指定すると、UAはそのHSTSホストのHSTSポリシー(アサートされたincludeSubDomainsディレクティブを含む)を削除します。

したがって、HSTSポリシーを削除する唯一の方法は、期間がゼロのHSTSヘッダーを設定することです。ま​​た、ブラウザーはこのヘッダーを安全に表示する必要があります。 TLSエラーも警告もない接続( 2.2 )。

<VirtualHost *:443>
    . . .
    Header always set Strict-Transport-Security "max-age=0"
</VirtualHost>

不思議なことに、IPを直接呼び出すと、すべてが期待どおりに機能します。

これはまったく奇妙なことではありません。 付録A で説明されているように、

  1. HSTSホストはドメイン名によってのみ識別されます。すべての形式の明示的なIPアドレス識別は除外されます。これは簡略化のためであり、直接IPアドレス識別をPKIベースのセキュリティと組み合わせて使用​​する場合のさまざまな問題も認識されています。

.devでHSTSを無効にすることはできません

これが文字通り .dev domain の場合、HSTSを無効にすることはできません。

あなたのセキュリティは私たちの優先事項です。 .devトップレベルドメインはHSTSプリロードリストに含まれているため、個々のHSTS登録や設定を行うことなく、.dev Webサイトおよびページへのすべての接続でHTTPSが必要になります。セキュリティが組み込まれています。

8
Esa Jokinen