OpenSSL: проблема расширения SessionTicket TLS - PullRequest
1 голос
/ 19 апреля 2010

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

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

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

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

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

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

1 Ответ

5 голосов
/ 21 апреля 2010

Цитата из 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 вам нужно будет закомментировать некоторые части исходного кода, иначе он не скомпилируется - поскольку безопасное пересогласование (которое само по себе считается небезопасным) требует это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...