OpenSSL: проблема расширения TLS SessionTicket TLS
-
28-09-2019 - |
Вопрос
Я использую приложение, которое использует 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 вам нужно будет прокомментировать некоторые части исходного кода или не будут компитенны - как безопасное пересмотрение (которое считается небезопасной компанией) Это.