Ubuntu и неопределенный символ для метода SSLv2

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

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

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

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

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

Я вижу, что я использую перспективный файл:

[пид 22614] открыть ("файл/usr/lib в/x86_64 с-линукс-дистрибутив GNU//libssl.так", флагов o_rdonly) = 7

запуск nm, этот файл не имеет символов. Однако .у файла есть похожий:

0000000000000030 Т SSLv23_method

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

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

как приступить к выяснению статус Ubuntu openssl-1.0.0?

3 ответов


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

журналы сборки Ubuntu являются общедоступными скачать. Вы можете видеть в онейроидно-для i386.openssl_1.0.0 e log, что библиотека настраивается с помощью -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 () и be возможность вести переговоры со всеми возможными клиентами, но разрешать только новые протоколы, такие как SSLv3 или TLSv1.


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


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

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

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