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. Это работает..