Я использую веб-службу, реализованную на сервере Ubuntu 14.04 LTS. Я отлаживаю TLSv1
соединение разрывается через некоторое время между клиентом, использующим openssl version 0.9.7m
и сервер, использующий openssl 1.0.1f
. У меня самого нет доступа к клиентской части, только к серверу и роутеру. Когда я бегу openssl s_server
вместо сервера я вижу сообщение secure renegotiation not supported
когда клиент подключается. Повторное согласование не обязательно имеет какое-либо отношение к проблемам с подключением, но я пытаюсь понять повторное согласование. Пока мне не удалось найти ответы на следующие вопросы:
openssl s_server
и / или openssl s_client
экспериментировать с этим?Есть четыре типа повторных переговоров возможно:
С момента открытия возможности выполнять повторные переговоры (CVE-2009-3555), уязвимость, которая существует «на всех текущих версиях TLS», можно с уверенностью предположить, что повторное согласование не будет выполнено безопасно, если и клиент, и сервер Расширение индикации повторного согласования TLS.
Первой реакцией OpenSSL было отключить повторное согласование, с реализацией безопасного повторного согласования в более позднем выпуске.
Клиент, использующий 0.9.7m, по определению, предшествует CVE-2009-3555 и одновременно уязвим для этой атаки, а также не может выполнять безопасное повторное согласование.
Что касается того, что может вызвать повторное согласование, вы можете отслеживать это в разных RFC: TLS v1.0, TLS v1.1, TLS v1.2. Разные Сообщения в блоге Анализ CVE-2009-3555 также предоставляет подробную информацию о том, когда это произойдет.
И относительно того, можно ли это заставить s_client
подкоманда для тестирования, да, это задокументировано на странице руководства:
ПОДКЛЮЧЕННЫЕ КОМАНДЫ
Если соединение установлено с сервером SSL, то отображаются любые данные, полученные от сервера, и любые нажатия клавиш будут отправлены на сервер. При интерактивном использовании (что означает, что ни -quiet, ни -ign_eof не были заданы), сеанс будет повторно согласован, если строка начинается с R [...]
Это тоже можно сделать программно.