web-dev-qa-db-ja.com

バックエンドアプリケーションが使用できるApacheでSSL / TLSバージョンのHTTPヘッダーを設定することは可能ですか?

SSLv3(IE6クライアントを使用するWinXP)経由でアクセスできる必要がある専用IPを備えた仮想マシン上に1つのサービスがあります。数年前にそのサービスをその仮想マシンに移動して、他のすべてのサービスでSSLv3を無効にできるようにしました。

そのサービスのSSLv3クライアントに、このサービスが「いつか」TLS1.1以降を必要とすることを通知したいと思います。その通知を他のクライアントに表示してはなりません(ビジネス上の決定)。

これを実現するために、プロキシ(Apache)で使用されているSSL/TLSバージョン情報を元のHTTPリクエストに挿入して、バックエンドアプリケーションに「システムをアップグレードしてください。恐竜」という条件付きの場所を設定することを考えていました。実際に使用されているトランスポート層のセキュリティ方式に基づく通知。

インジェクションを構成するにはどうすればよいですか?必要な環境変数は、Apacheがデバッグフラグを使用してコンパイルされている場合にのみ見つかりましたが、本番環境では不可能です。

最終的な結果として、ApacheプロキシはHTTPリクエストヘッダー「X-TLS-Version:SSL3」(または「X-TLS-Version:TLS12」または一般的な構文)を挿入します。

3
burnersk

Apacheのmod_sslは、SSLプロトコルを含む SSLOptions ディレクティブ+StdEnvVarsが有効になっている場合に、いくつかの 環境変数 を使用可能にします。

SSL_PROTOCOLstring SSLプロトコルバージョン(SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2)

これを 条件 として使用して、SSLv3を使用するときに ヘッダー を設定できます。

SSLOptions +StdEnvVars    
SetEnvIf SSL_PROTOCOL "SSLv3" insecure-protocol=true
RequestHeader set X-TLS-Version "SSLv3" env=insecure-protocol 

常にSSLプロトコルでヘッダーを設定するには、以下が機能する場合があります。

RequestHeader set X-TLS-Version %{SSL_PROTOCOL}s  

これには、単純なシナリオの場合、SSLOptions +StdEnvVarsのオーバーヘッドを発生させる必要がないが、%{FOOBAR}s構文を使用して特定のSSL変数に直接アクセスできるという小さな利点があります。

どちらもテストされていません。

4
HBruijn

セットする SSLOptions +StdEnvVarsおよび さまざまなSSL/TLS関連の環境変数 が設定されます。 (そして、いくつかのサンプル構成にあるように、この値はWebサーバー構成にすでに設定されている場合があります。)

アプリケーションが検査したい環境変数はSSL_PROTOCOL

また、IE6とXP)を時間どおりに環境から削除できなかったことをお悔やみ申し上げます。

1
Michael Hampton