Возникла проблема с партнером, который переносит свое приложение в облако.Первоначально рукопожатие TLS завершалось с:
140659109308320: ошибка: 1409E0E5: подпрограммы SSL: ssl3_write_bytes: сбой рукопожатия ssl: s3_pkt.c: 659:
Небольшое исследование и тестирование с OpenSSL вкомандная строка указывает, что мы должны включить SNI с соединением TLS.Он работал в командной строке, когда он был включен.
Мы все еще терпим неудачу в нашем приложении, когда пытаемся установить переменную SNI с ssl_set_tlsext_host_name, передаваемым в libssl нашим приложением, которое написано на C с libssl, связанным какбиблиотека общих объектов.Это было построено несколько лет назад, и история показывает, что мы используем OpenSSL 1.0.2h.
Приложение в настоящий момент работает на RHEL4, и самая высокая поддерживаемая версия RPM, доступная от RH и установленная в системе, является одной из версий 0.9.8.Мы установили 1.0.2h по отдельному пути или скомпилировали его из отдельного источника, чтобы связать его с приложением.История сборки немного размыта.Может быть, не имеет значения, но просто обратите внимание.
Мы можем заставить TLS-соединение работать с новой версией нашего приложения (к сожалению, пока не готовой к развертыванию), ссылаясь на локальную установку OpenSSL 1.0.2k на RHEL 7
Итак, пытаемся выяснить, чего нам не хватает в текущей версии приложения.Список изменений OpenSSL указывает на то, что ssl_set_tlsext_host_name было реализовано позднее в версии 0.9 и в более ранних выпусках 1.0.
Похоже, что нам не хватает ключевого элемента или формат вызова изменился где-то по пути.
Надеясь, что кто-то может иметь пример или опыт с аналогичной реализацией.
Спасибо!