Найти - Пользователи
Полная версия: Ошибки unexpected eof while reading (_ssl.c:2471) при обращении к сайтам
Начало » Python для экспертов » Ошибки unexpected eof while reading (_ssl.c:2471) при обращении к сайтам
1 2
Tarnum
Использую Python 3.7.1 с библиотеками OpenSSL 1.1.1k, при обращении к сайтам всё работает нормально. В данный момент собираюсь переходить на использование OpenSSL 3.0.0, но при замене библиотек версии 1.1.1k на 3.0.0 alpha 17, начинаю получать такие ошибки, как на скриншоте (выделены жёлтым):



Целевая ОС у меня Windows Server 2003 R2 Standard x86, хотя пробовал и на Windows Server 2008 R2 - ошибки те же. Обновить Python на целевой ОС не представляется возможным. Ошибки могут всплывать через достаточно длительный промежуток времени (30 минут и более), но появляются при обращении практически к любому сайту по https. Что это и как исправить?

P.S. При компиляции OpenSSL 1.1.1k и 3.0.0 alpha 17 использовались дефолтные опции, для компиляции использовался MSYS2 и MinGW.
Rodegast
> с библиотеками OpenSSL 1.1.1k, при обращении к сайтам всё работает нормально. В данный момент собираюсь переходить на использование OpenSSL 3.0.0

Зачем?
Tarnum
Во-первых, хочу заранее подготовиться к выходу финальной версии OpenSSL 3.0.0, а поддержка версии 1.1.1 прекратится через два года.
Во-вторых, в данный момент изучаю новые возможности версии 3.0.0, преследуя академические цели.
На первый взгляд, базовый функционал криптобиблиотек на уровне экспортируемых функций, используемых Python, не изменился (в версии 3.0.0 он расширен по сравнению с 1.1.1k) - и хотелось бы разобраться в причине появления этих ошибок.
Tarnum
Оказалось, задача хорошего решения не имеет. В течение недели пытался использовать различные способы, в частности, очень надеялся на новую опцию SSL_OP_IGNORE_UNEXPECTED_EOF в OpenSSL 3.0.0 - всё оказалось тщетно. Её переключение не помогает. Вдобавок, выяснилось, что это не единственное затруднение - Python 3.7.1 оказался действительно несовместим с OpenSSL 3.0.0. Всплыли более серъёзные проблемы, в частности, невозможность скачать с сайта rarlab.com и неработоспособность git при использовании библиотек 3-й версии OpenSSL.

Тему можно закрыть.
Tarnum
Проблему решил совместно с коллективом разработчиков, пришлось оплатить разработку нескольких модулей. Жаль, что никто из участников этого форума не взялся помочь, но поскольку я довольно сильно пострадал материально, бесплатно поделиться решением с остальными теперь, увы, не смогу…
py.user.next
Tarnum
но поскольку я довольно сильно пострадал материально, бесплатно поделиться решением с остальными теперь, увы, не смогу
А зря. Вдруг тебе просто глушанули эти сообщения, которые ты убрать хотел. И таким образом у тебя срабатывает критерий оценки “я теперь не вижу сообщения об ошибках - значит, всё исправилось”. Вот это был бы прикол.

Tarnum
на 3.0.0 alpha 17
То есть ты реально собрался рабочий сервер поставить в зависимость от альфа-версии чего угодно? Знаешь, о чём это говорит сходу? О том, что ты абсолютно не шаришь как в безопасности, так и в софте. Соответственно, если безопасностью (а SSL - это безопасность) занимается дилетант, то его можно поиметь. Сервер твой никому даром не нужен, а денежки - да.
Tarnum
py.user.next
Вдруг тебе просто глушанули эти сообщения, которые ты убрать хотел. И таким образом у тебя срабатывает критерий оценки “я теперь не вижу сообщения об ошибках - значит, всё исправилось”.
Никто ничего не глушанул, если бы Вы поинтересовались историей этого вопроса, узнали бы, что ошибки “unexpected eof while reading” появились ещё в финальной версии OpenSSL 1.1.1e после соответствующего исправления проблемы TLS протокола, но выяснилось, что такие ошибки появляются на каждом сайте, и в версии 1.1.1f всё вернули обратно, т.к. исправление ломало почти все существующие приложения, использующие OpenSSL. Исправление было перенесено в версию 3.0.0, и добавлена опция SSL_OP_IGNORE_UNEXPECTED_EOF, которую требуется включить в таких случаях. Разработчики OpenSSL надеются, что весь веб постепенно устранит проблемы TLS протокола, и в опции отпадёт необходимость.
py.user.next
То есть ты реально собрался рабочий сервер поставить в зависимость от альфа-версии чего угодно? Знаешь, о чём это говорит сходу? О том, что ты абсолютно не шаришь как в безопасности, так и в софте. Соответственно, если безопасностью (а SSL - это безопасность) занимается дилетант, то его можно поиметь. Сервер твой никому даром не нужен, а денежки - да.
Вы даже не взглянули, когда было отправлено заглавное сообщение темы - 3 месяца назад. Конечно, в продакшне у меня уже девелоперская OpenSSL 3.0.0 beta-3, альфа версии давно канули в лету. Разумеется, приложение пока работает в тестовом режиме, стабильность подтверждается тестами, проблем с безопасностью не выявлено. Когда нет возможности присматривать за сервером - возвращаю прежний код на официально стабильной OpenSSL 1.1.1k, и готовлюсь к выходу официального финального релиза OpenSSL 3.0.0 в ближайшее время - как только он выйдет, сразу станет стандартом на ближайшее будущее.
py.user.next
Tarnum
Никто ничего не глушанул, если бы Вы поинтересовались историей этого вопроса
Это неинтересно. Просто бросилось в глаза, что человек боится, что его взломают, и из-за этого ставит самую последнюю версию, которую может найти, но при этом находит всего-то какую-то альфа-версию и тем самым, наоборот, ослабляет защиту, потому что альфа-версии потому так и называются, что это сигнал такой всем вокруг “ребята, не надо ставить эту программу, в ней могут быть ошибки”. Это не релиз.

Ты вот знаешь, что у питона тоже есть альфа-версии? И их не надо ставить, потому что они часто в Segmentation fault вылетают при обычной работе скриптов или вообще не собираются даже полноценно, что-то отваливается постоянно там. Это только для разработчиков, которые помочь хотят.

Tarnum
и готовлюсь к выходу официального финального релиза OpenSSL 3.0.0 в ближайшее время - как только он выйдет, сразу станет стандартом на ближайшее будущее.
А вот прикол, знаешь, какой будет? Ты потратил ресурсы на разработку каких-то костылей и тут выходит релиз, в котором это всё исправлено и эти костыли просто не нужны.
AD0DE412
Tarnum
вы вы … просто что то с чем то
мало того что используете бету (черт с ним возможно есть причины)
но еще это и форк (ну лвдно может быть там все норм)
но как бу то этого мало это и закрытый форк WOW!
т.е. я так понимаю поддерживать вы его будете сами

на вашем бы месте я бы всеми правдами и не правдами … короче вам на оборот нужно протащить ваш патч в мастер-ветку а вы блин как голум прелесть )
Tarnum
Попробую ещё раз, видимо, меня не слышат или не читают, что я пишу:
py.user.next
но при этом находит всего-то какую-то альфа-версию и тем самым, наоборот, ослабляет защиту
Я не использовал и не использую альфа-версии. Я 1 раз собрал альфа-версию для проверки 3 месяца назад, убедился, что не работает. И тут же стёр. Это понятно?
py.user.next
Ты потратил ресурсы на разработку каких-то костылей и тут выходит релиз, в котором это всё исправлено и эти костыли просто не нужны.
Разработчики OpenSSL уже давно объявили, что функционал и API версии 3.0.0 меняться больше не будут. Кроме исправления ошибок в коде, не относящихся к описанному в топике, всё пойдёт в релиз именно так, как есть сейчас.
AD0DE412
вы вы … просто что то с чем то
мало того что используете бету (черт с ним возможно есть причины)
но еще это и форк (ну лвдно может быть там все норм)
но как бу то этого мало это и закрытый форк WOW!
т.е. я так понимаю поддерживать вы его будете сами
Я использую то, что есть для целевой системы. Об этом писано в заглавном сообщении. И это не форк, а полнофункциональная официальная версия Python (не бета и не альфа). Бета-версия OpenSSL 3.0.0 используется мной в тестовом режиме для проверки работоспособности нового функционала, и будет окончательно внедрена в день выхода финального релиза 3.0.0. Надеюсь, это тоже понятно. И да, поддерживать сервер и проект я буду сам.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB