2010-04-19 2 views
1

Я использую приложение, которое использует OpenSSL для клиентской стороны TLS. Мы обновляем версию OpenSSL с 0.9.8 до 0.9.8k. И тогда TLS не работает ...OpenSSL: проблема расширения SessionTicket TLS

Wireshark показывает, что новая версия (с OpenSSL 0.9.8k) отправляет клиентский привет пакет с расширением SessionTicket, а серверная сторона отвечает фатальной внутренней ошибкой.

Предыдущая версия отправляет почти идентичный пакет приветствия, но без SessionTicket ext.

Когда я заменил TLSv1_client_method с SSLv23_client_method, все работало нормально - посланный клиент привет пакет был SSLv2 один (В анализаторе) без какого-либо расширения (? Как это было не TLS, но SSL)

Есть лучший способ отключить это расширение или решить проблему по-другому?

Спасибо заранее, rursw1

ответ

5

Цитата RFC 5077: «Обратите внимание, что кодирование пустого расширения SessionTicket было неоднозначным в RFC 4507. Реализация RFC 4507 может быть закодирована как:

00 23  Extension type 35 
    00 02  Length of extension contents 
    00 00  Length of ticket 

или он может быть закодирован его таким же образом, поскольку это обновление:

00 23  Extension type 35 
    00 00  Length of extension contents 

Сервер, желающий поддерживать клиентов RFC 4507, должен ответить на пустой пул SessionTicket, закодированный так же, как он его получил. « Так сервер я работал с опорами RFC 4507, а не 5077. новой

Удаление его„нормально“, используя SSL_CTX_set_options с SSL_OP_NO_TICKET решить эту проблему.

Надеется, что это поможет кому-то ...

EDIT: Ну, это может быть сделано также с флагом конфигурации -no-tlsext. (При запуске скрипта Perl Configure). Но обратите внимание, что в OpenSSL 0.9.8n и OpenSSL 1.0.0 вам нужно будет прокомментировать некоторые части исходного кода или он не будет компилироваться - как безопасное переключение (которое само по себе считается небезопасным) требует этого.

 Смежные вопросы

  • Нет связанных вопросов^_^