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


13

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

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

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

私はnginxに機能があることを知っていますproxy_set_header。したがって、これは次のように簡単になります

proxy_set_header X-HTTPS-Protocol $something;

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

ありがとう


SSLv3を使用している場合、同様のスレッドApacheリダイレクトユーザーが指摘したように、この考えは非常に悪い考えになります。

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

回答:


14

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

$ssl_protocol

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

あなたのproxy_set_header構成は

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

別の参照:ここ


$ ssl_protocolの最後にセミコロンがありません(serverf * lでは6文字を変更する必要があるため変更できません)。
危険89

@ danger89が行われている
sanmai
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.