OpenSSL: проблема с расширением SessionTicket TLS

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

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

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

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

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

Заранее спасибо, rursw1


person rkellerm    schedule 19.04.2010    source источник


Ответы (1)


Цитата из 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 решило проблему.

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

РЕДАКТИРОВАТЬ: Ну, это можно сделать и с флагом конфигурации -no-tlsext. (При запуске скрипта Perl Configure). Но обратите внимание, что в OpenSSL 0.9.8n и OpenSSL 1.0.0 вам нужно будет закомментировать некоторые части исходного кода, иначе он не скомпилируется - так как требуется безопасное повторное согласование (которое само по себе считается небезопасным) Это.

person rkellerm    schedule 21.04.2010