Google Chrome が共通ベースを持つすべての URL を SSL 接続として処理しないようにする

Google Chrome が共通ベースを持つすべての URL を SSL 接続として処理しないようにする

私は ISP 提供の DNS 名を介して複数の Web サイトをホストしており、haproxy をインストールしてルーターのポート 80 を超えてそれらを分割しています。haproxy は、1 つの Web サイトを https に変更するまで、私の (11 個だと思います) 個別の Web サイトに対して非常にうまく機能していました。

現在、Google Chrome はすべての Web サイトが https であると想定しており、https の Web サイトにのみアクセスできます :-(

Chromeがこのように動作する理由は、私のウェブサイトはすべて私のドメイン名(myexampledomain.com)で始まるためだと思われます。例のサイト1はhttp://myexampledomain.com/website-one/main.htmlそして例のサイト2はhttps://myexampledomain.com/website-two/main.htmlそして、何らかの理由で、Chrome が https リンクに正常にアクセスすると、非 https リンクは自動的に https としてアクセスされます。s を削除して (http にするため)、Chrome はそれをそこに再度追加します。

Internet Explorer 9 から Web サイトにアクセスすると、すべて正常に動作します。少なくとも、接続が自動的に https としてオートコンプリートされることなくアクセスできます。つまり、バックエンドのどこかに http から https へのリダイレクトはありません。これは Chrome がおかしな動作をしているだけです。Chrome がおかしな動作をしている理由と、Chrome から他のサイトにアクセスする方法を知っている人はいませんか? IE は嫌いです。IE を使用すると身体に痛みを感じます ;-)

答え1

(私たちの議論を適切な回答として書き記すと:)

Google Chrome(および他のすべての最新ブラウザ)は、厳格な輸送セキュリティHTTP ヘッダーは、ブラウザに「このサイトは HTTPS 経由でのみアクセスされることになっているため、今後ユーザーが HTTP を要求しても、代わりに HTTPS を提供する」ことを通知します。HTTPS の使用がますます一般的になるにつれて、このヘッダーの送信は新しいソフトウェアやフレームワークのデフォルトになりつつあります。一般的に、HTTPS が設定されている場合 (Strict-Transport-Security ヘッダーを有効にするには設定する必要があります)、すべてに HTTPS を使用することが望ましいからです。お気づきのとおり、使用していたソフトウェアはデフォルトでこのように動作するように構成されています。Internet Explorer 9 ではこの動作は見られませんでした。この Web 機能をサポートするには古すぎるためです。

解決策は 2 つあります。(1) すべてのユーザーに HTTPS 経由を強制したくないので、ヘッダーを送信しないようにソフトウェアの設定を変更するか、(2) すべてのサイトが HTTPS 経由で適切に動作するように変更します。サーバーを設定して HTTPS 証明書が機能するようになれば、今日ではインターネット上で暗号化されていない接続を使用する必要はまったくないので、通常は 2 番目のオプションをお勧めします。

答え2

Peter Cooper Jr. のコメントの回答によると、私の心痛は、gitlab omnibus にバンドルされた NGINX インストールによって引き起こされています。これは、接続クライアントに、通信時には常に https のみを使用するように指示するものであり、Gitlab/NGINX の場合、安全な通信の期間は 24 か月に設定されています。

STS ヘッダーに関する情報:http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Gitlab のインストールに関する情報:nginx の設定

関連情報