Вопрос

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

Wireshark показывает, что новая версия (с OpenSSL 0,9.8K) отправляет пакет Hello Client с расширением SessionTicket - и сторона сервера реагирует с фатальной внутренней ошибкой.

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

Когда я заменил tlsv1_client_method с sslv23_client_method, все работало нормально - отправленный клиент Hello Packet был SSLV2 One (в Sniffer) без какого-либо расширения (как это не было TLS, а SSL?)

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top