Подтвердить что ты не робот

Ubuntu и undefined для SSLv2_method

Являются ли канонические символы переименования в их версии пакета 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_method

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

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

Как перейти к определению статуса Ubuntu openssl-1.0.0?

4b9b3361

Ответ 1

Люди 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.

Ответ 3

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

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

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