web-dev-qa-db-ja.com

HTTPヘッダーを介してSSLプロトコル情報をバックエンドに渡す

最近プードルの脆弱性が明らかになった後、私たちのチームはSSLv3から移行することを決定しました。しかし、完全に削除する前に、ブラウザが非推奨のSSLv3を使用することをdaily users警告したいと考えています。だから、私たちはアイデアを思いついた

  • フロントエンドのSSLオフロードからプロトコル(SSLv3、TLS1など...)を検出します(nginxを使用します)
  • その情報(SSLプロトコル)をHTTPヘッダー経由でApacheバックエンドに渡します。

次に、バックエンドコードがそのヘッダーを処理し、警告を表示しますクライアントがSSLv3を使用する場合

Nginxには機能proxy_set_header。だからこれは簡単です

proxy_set_header X-HTTPS-Protocol $something;

さて、問題は次のとおりです。明らかにnginxはクライアントが使用するプロトコルを知っていますが、その情報をHTTPヘッダー経由でバックエンドに渡すにはどうすればよいですか?

ありがとう


同様のスレッド SSLv3を使用している場合はApacheリダイレクトユーザー で指摘されているように、このアイデアは非常に悪いアイデアになる可能性があります。

その理由は、HTTPトラフィックがTLSトンネルを介して送信される前にTLSハンドシェイクが発生するためです。バックエンドがSSLプロトコルを検出するまでに、クライアントは最初のリクエストでプライベートデータを送信した可能性があります。永続的で長期的なソリューションの場合、SSLv3を無効にすることを検討する必要があります。

13
tpml7

Nginxはconfigで使用できる多くの変数を使用します。 このページ は、変数の完全なリストを提供しました。 HTTPSリクエストでプロトコルを保持する変数は ssl_protocol 。引用:

$ssl_protocol

確立されたSSL接続のプロトコルを返します。

だからあなたのproxy_set_header構成は

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

別の参照: ここ

14
masegaloeh