web-dev-qa-db-ja.com

nginx内でSSLv3に接続しているユーザーをリダイレクトする

私はPOODLEのためにSSLv3のすべてのサポートをやめようとしていましたが、WindowsXPのIE)のような古いブラウザから来ている人がまだいることがわかりました。

Nginx内からこれらのSSLv3のみのユーザーを検出し、詳細な手順が記載されたヘルパーページにリダイレクトするにはどうすればよいですか?

これらのユーザーが安全でないブラウザを使用し続けるには、間違いなく 回避策なし が必要です。

また、SNI以外のすべてのブラウザーに同じことができれば特に嬉しいです。SSLv3にはSNIが付属していないため、SNI以外のブラウザーをリダイレクトできれば、SSLv3の問題も解決します。

4
sanmai

SSLv3を有効のままにする問題は別として、SSLv3プロトコルが使用されているかどうかに基づいてリダイレクトするようにnginxに指示するだけです。

if ($ssl_protocol = SSLv3) {
  rewrite ^ /poodle-doodle.html;
}

これはシェルからテストできます。

$ wget --secure-protocol=SSLv3 -O - $SERVER_URL
# or
$ curl -v -3 $SERVER_URL
4
plasmid87

私はnginxconfigの専門家ではありませんが、特定のホスト名のセットアップと、他のすべてのリクエストのデフォルトセットアップを行うことができるはずです。クライアントがSNIを使用し、SNIで指定されたホスト名が構成と一致する場合、名前ベースのホストのセットアップはhttpsで自動的に使用されます。他のすべての場合、つまり異なるホスト名、SNIのないTLSクライアント、およびSSL 3.0のあるクライアント(SNIをサポートしない)では、デフォルトのセットアップが使用されるため、そこで異なる情報を提供できます。このデフォルト設定では、古いクライアントに発行するすべての警告を実行できます。

このように、すべてのSNIクライアントにSHA-256で署名された証明書を与えるが、他の1つだけがSHA-1で署名された証明書を与えるなど、さまざまな証明書を使用することもできます。これらの古いクライアントはまだSHA-256をサポートしていない可能性があるためです。

編集:Xavier Lucasからのコメントによると、デフォルト(非SNI)構成の証明書設定のみが使用されますが、他の設定はホストヘッダーによって異なります。これは、SNI以外のクライアントに異なるドキュメントルートがないことを意味します。

0
Steffen Ullrich