Журнал отображает TLSv1 вместо SSLv3 - PullRequest
0 голосов
/ 11 мая 2018

Я включил журналы в своем приложении, используя опцию -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 Ответ

0 голосов
/ 11 мая 2018

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

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

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

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

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

...