web-dev-qa-db-ja.com

SNIとHTTPが提供するドメイン間の競合

私は最近、WordPressウェブサイトに小さなストアがあり、ホスティングプロバイダーからUbuntuサーバー12.04.2 LTSとApache 2.2.22を実行している自分のサーバーに移動しました。ストアにはSSLが必要です。サーバーの新しいIPにいくつかの単純なvhostsをセットアップしました。1つは特定のIPのポート80にバインドし、もう1つはポート443にバインドします。どちらにもServerName www.example.comおよびServerAlias example.com vhost設定内。私が持っています SSLStrictSNIVHostCheck off

サイトの実行速度は非常に遅いですが、機能しています。エラーログに次のエラーが記録されます。

[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different

遅いのは上記のメッセージに関係していると思います。なぜそれが現れているのか、それについて私が何ができるのかについてのアイデアはありますか?

22
flickerfly

アクセスログを確認します(エラーログではありません)。エラーの日時を使用して、問題のあるリクエストを特定し、ユーザーエージェントを見つけることができます。私の場合、それはボットでした:

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"

サーバーがHTTP 400:Bad Requestで応答します。

私が誤っていない限り、TLSネゴシエーションでは、クライアントはホスト名を2回送信します。1回はSNI(サーバー名表示)でSSL接続が確立される前、もう1回は実際のHTTP要求で送信されます。サーバー名が一致しない場合、これはクライアントの破損を示しており、サーバーの構成方法とは何の関係もありません。

多分彼らはいつかボットを修正するでしょうが、その間はおそらくそれを無視することができます。リクエストが非常に高速で発生しない限り、これがホストの速度低下の原因になるとは思いません。

24
Arno Schäfer

おそらくこのエラーは、サーバーの脆弱性をテストするために一部のクライアントによって意図的に呼び出されますresearchscan367.eecs.umich.eduからのリクエストにより、私が管理しているサーバーでエラーが発生したことがわかりました。この場合、エラーが発生するのはgoodthing®です。

どんな種類の攻撃が可能か知りたくて、Security Stack Exchangeで次の質問をしました: Apache2のエラーコードAH02032によってどの種類の攻撃が阻止されていますか?

12
user370761

私の場合、アンダースコア付きの新しい仮想ホストの作成が問題でした。ワイルドカードSSL証明書を持っています。

うまくいきませんでした:

<VirtualHost *:443>
        SSLEngine on
        ServerName sub_domain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

Apacheは正常に再起動しましたが、HTTP 400エラーが発生しました。エラーログ:

[Wed Sep 05 11:28:00.349960 2018] [ssl:error] [pid 19906:tid 140392626808576] AH02031: Hostname sub_domain.example.com provided via SNI, but no hostname provided in HTTP request

しかし、アンダースコアを削除するとうまくいきました:

<VirtualHost *:443>
        SSLEngine on
        ServerName subdomain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>
2
MS Berends

一見、クライアントの問題のように聞こえます...この問題の原因となっているブラウザは何ですか?

このメッセージは、ssl connectionsetup中にクライアントが送信するホスト名が、SSL層が起動すると、クライアントがHTTPS要求で送信するホスト名と異なることを示唆します。

1
alxgomz

/ etc/hostsファイルをチェックして、ドメイン名をローカル(内部)IPアドレスに割り当てているかどうかを確認します。/etc/hosts service nscd restartを変更した後、ネームサービスキャッシュデーモンを再起動することを忘れないでください

0
Jim Da Otter