Ubuntu и неопределенный символ для SSLv2_method

Переименовывает ли Canonical символы в своей пакетной версии openssl, и если да, то с какой целью? Когда я компилирую openssl-1.0.0e.tar.gz (загруженный непосредственно с openssl.org) с нуля, я вижу необходимый символ, но Python (и я), похоже, не может найти его в упакованной версии.

Читайте дальше для получения дополнительной информации о том, как я диагностировал эту проблему...

Я пытаюсь скомпилировать Python 2.6.1 в Ubuntu 11.10 и получаю сообщение об ошибке выше. Причина, по которой я использую этот старый Python, заключается в том, что я пытаюсь сделать свою установку Ubuntu на 100% совместимой с производственной системой для целей разработки.

При выполнении

strace -feopen make -j4 |& grep "libssl"

Я вижу, что использую многообещающий файл:

[pid 22614] open("/usr/lib/x86_64-linux-gnu//libssl.so", O_RDONLY) = 7

При запуске nm этот файл не имеет символов. Однако файл .a имеет аналогичный:

0000000000000030 T SSLv23_метод

Пакет libssl1.0.0-dbg устанавливается через synaptic, однако, когда я перечисляю установленные файлы для этого пакета, все, что я вижу, это «Список установленных файлов доступен только для установленных пакетов», что явно является ошибкой Ubuntu. Поэтому я не уверен, как я должен проверять, какие символы присутствуют в .so.

Однако я подозреваю, что они в любом случае переименовали SSLv2_method в SSLv23_method.

Как продолжить, чтобы выяснить статус Ubuntu openssl-1.0.0?


person Setjmp    schedule 21.11.2011    source источник
comment
Вы нашли обходной путь для сборки Python 2.6 на Ubuntu с поддержкой SSL?   -  person Carl Meyer    schedule 23.05.2012
comment
См. также Ошибка 5453: Ошибка компиляции в Boost.Asio с OPENSSL_NO_SSL2 на Boost Баг Трек. Надеюсь, повысить защищенное использование SSLv3 на основе OPENSSL_NO_SSL3.   -  person jww    schedule 03.08.2016


Ответы (3)


Люди Ubuntu создают OpenSSL без поддержки SSLv2, потому что протокол имеет известную безопасность. вопросы. Вот почему вы не можете найти SSLv2_method в их библиотеке, даже если вы можете найти ее при самостоятельной компиляции библиотеки.

Журналы сборки Ubuntu общедоступны доступны. Вы можете увидеть в файле oneiric-i386.openssl_1. 0.0e регистрирует, что библиотека настроена с параметром -no-ssl2, который отключает поддержку SSLv2.

./Configure --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/i386-linux-gnu no-idea no-mdc2 no-rc5 zlib  enable-tlsext no-ssl2 debian-i386
Configuring for debian-i386
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-idea         [option]   OPENSSL_NO_IDEA (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-mdc2         [option]   OPENSSL_NO_MDC2 (skip dir)
    no-rc5          [option]   OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-shared       [default] 
    no-ssl2         [option]   OPENSSL_NO_SSL2 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-zlib-dynamic [default] 

Обратите внимание, что наличие SSLv23_method не означает, что клиент сможет подключиться к серверу с помощью SSLv2. Документация OpenSSL кратко обсуждает эту ситуацию:

Список доступных протоколов впоследствии может быть ограничен с помощью параметров SSL_OP_NO_SSLv2, SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 функций SSL_CTX_set_options() или SSL_set_options(). Используя эти параметры, можно выбрать, например. SSLv23_server_method() и иметь возможность вести переговоры со всеми возможными клиентами, но разрешать только более новые протоколы, такие как SSLv3 или TLSv1.

person indiv    schedule 21.11.2011
comment
Это попало в точку! Спасибо за ответ на такой целенаправленный вопрос! - person Setjmp; 29.11.2011
comment
@kirill_igum: ... вы заметили другой ответ Карла Мейера? - person indiv; 22.10.2012
comment
@indiv это больше похоже на взлом. Я ожидал установить какую-то другую библиотеку из официальных ppas. но я думаю, это лучшее, что доступно. - person kirill_igum; 22.10.2012
comment
@kirill_igum: О, понятно. Что ж, вы всегда можете самостоятельно скомпилировать OpenSSL с включенным SSLv2 и установить его на свой компьютер. Загрузите исходный код OpenSSL, ./configure, sudo make install. Я не пробовал это лично, но не могу думать о каких-либо проблемах, связанных с этим (кроме повторного включения устаревшего алгоритма с известными проблемами безопасности). - person indiv; 22.10.2012
comment
Я считаю, что последний выпуск M2Crypto (или даже несколько предыдущих выпусков) должен иметь дело с Отсутствие поддержки SSLv2 просто отлично. - person mcepl; 09.08.2017

Мне удалось собрать Python 2.6 с поддержкой SSL в Ubuntu 12.04 с помощью исправления в это сообщение в блоге.

person Carl Meyer    schedule 25.06.2012

Мое исправление заключалось в установке openssl без поддержки ssl2.

./config --prefix=/usr enable-shared -no-ssl2

Затем установите все, что связано с библиотеками в /usr/ssl. Оно работает..

person Vijay Kumar Kanta    schedule 17.12.2013