Я использую версию Apache 2.2.4. Я уже знаю, что эта версия поддерживает только SSLv2, SSLv3 и TLSv1.0, но когда я ее использую, происходит что-то странное:
Когда SSLv2 отключен, веб-браузер (в моем случае Internet Explorer) использует SSLv3.
SSL 3.0, 3DES с шифрованием 168 бит (High); RSA с обменом 2048 бит.
Когда я включаю SSLv2, веб-браузер использует TLSv1.0:
TLS 1.0, AES с 256-битным шифрованием (High); RSA с обменом 2048 бит
И, наконец, когда я отключаю оба протокола (SSLv2 и v3), веб-страница вообще не загружается!
Я использовал этот конфиг для Apache:
SSLProtocol all
SSLCipherSuite all
Не могли бы вы мне это объяснить? Как можно использовать TLSv1.0 без включения SSLv2?
Такое поведение вызвано исходной спецификацией TLS v1 RFC (RFC 2246, раздел «E. Обратная совместимость с SSL»).
В основном этот RFC заявляет, что большинство серверов не будут использовать разные прослушивающие порты для разных версий SSL / TLS. Поэтому для обеспечения обратной совместимости программному обеспечению рекомендуется сначала инициировать соединение с помощью «старого» приветственного сообщения SSL, затем обновить соединение до TLS, если оно поддерживается с обеих сторон, и никогда не пытаться установить соединение напрямую с использованием TLS («TLS 1.0 клиенты, поддерживающие серверы SSL версии 2.0, должны отправлять приветственные сообщения клиента SSL версии 2.0 ").
Предыдущие версии Java (JRE5) имели такое поведение, оно было улучшено новыми версиями, которые теперь напрямую обрабатывают рукопожатие TLS. Возможно, вам следует проверить версию браузера и уровень исправления, а также проверить, сохраняется ли это поведение после отключения SSLv2 на стороне браузера.