Журнал отображает TLSv1 вместо SSLv3

Я включил журналы в моем приложении, используя -Djavax.net.debug=all вариант. Написанный код должен использовать протокол SSLv3, но в журналах при проверке он отображается как::

*** ClientHello, TLSv1

*** ServerHello, TLSv1

Насколько я понимаю из чтения, Клиент и Сервер используют TLSv1 для рукопожатия, но, поскольку я использовал SSLv3 в своем коде при инициализации сокета, в идеале он должен печатать SSLv3 вместо TLSv1.

Ниже приведен фрагмент кода, который я использовал:

SSLContextBuilder builder = new SSLContextBuilder();
builder.useProtocol("SSLv3");

SSLContext sslContext = builder.build();

Может кто-нибудь, пожалуйста, уточнить причину того же, или есть что-то еще, что я пропустил. Просто чтобы добавить, я нахожусь на Java 7.

1 ответ

Скорее всего SSLv3 просто не поддерживается сервером (что в настоящее время рекомендуется из-за безопасности), поэтому библиотека использует наименее поддерживаемые TLS версия.

UPD: кажется, что формат hello ничего не говорит о том, какой протокол будет использоваться на самом деле. Есть кое-что из документов Java:

В настоящее время протоколы SSLv3, TLSv1 и TLSv1.1 позволяют отправлять приветствия SSLv3, TLSv1 и TLSv1.1, инкапсулированные в формат приветствия SSLv2. Для получения более подробной информации о причинах такой совместимости в этих протоколах см. Приложение E в соответствующих RFC (ранее перечисленных).

Обратите внимание, что некоторые серверы SSL/TLS не поддерживают формат приветствия v2 и требуют, чтобы клиент приветствовал в соответствии с форматами приветствия клиента SSLv3 или TLSv1.

Опция SSLv2Hello контролирует инкапсуляцию SSLv2. Если SSLv2Hello отключен на клиенте, то все исходящие сообщения будут соответствовать формату приветствия клиента SSLv3/TLSv1. Если SSLv2Hello отключен на сервере, то все входящие сообщения должны соответствовать формату приветствия клиента SSLv3/TLSv1.

Другие вопросы по тегам