TLSv1はsslv2を有効にしないと動作しません

TLSv1はsslv2を有効にしないと動作しません

私は Apache 2.2.4 バージョンを使用しています。このバージョンでは SSLv2、SSLv3、TLSv1.0 のみがサポートされていることは既にわかっていますが、使用すると奇妙なことが起こります。

SSLv2が無効になっている場合、Webブラウザ(私の場合はインターネットエクスプローラー)はSSLv3を使用します。

SSL 3.0、168 ビット暗号化の 3DES (高)、2048 ビット交換の RSA。

SSLv2 を有効にすると、Web ブラウザは TLSv1.0 を使用します。

TLS 1.0、256 ビット暗号化の AES (高)、2048 ビット交換の RSA

そして最後に、両方のプロトコル (SSLv2 と v3) を無効にすると、Web ページがまったく読み込まれなくなります。

Apache では次の設定を使用しました:

SSLProtocol all
SSLCipherSuite all

これについて説明していただけますか? SSLv2 を有効にせずに TLSv1.0 を使用するにはどうすればよいですか?

答え1

この動作は、TLS v1 RFCの元の仕様(RFC 2246、セクション「E. SSL との下位互換性」)。

基本的に、この RFC では、ほとんどのサーバーは SSL/TLS の異なるバージョンに対して異なるリスニング ポートを使用しないと規定されています。したがって、下位互換性を確保するために、ソフトウェアでは最初に「古い」SSL hello メッセージを使用して接続を開始し、両側でサポートされている場合は接続を TLS にアップグレードし、TLS を使用して直接接続を確立しないようにすることをお勧めします (「SSL バージョン 2.0 サーバーをサポートする TLS 1.0 クライアントは、SSL バージョン 2.0 クライアント hello メッセージを送信する必要があります」)。

以前のバージョンの Java (JRE5) ではこの動作がありましたが、新しいバージョンでは TLS ハンドシェイクを直接処理するようになり、改善されました。ブラウザのバージョンとパッチ レベルを確認し、ブラウザ側で SSLv2 を無効にした後もこの動作が続くかどうかを確認してください。

関連情報