Ubuntu и неопределенный символ для SSLv2_method - PullRequest
24 голосов
/ 21 ноября 2011

Является ли 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_method

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

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

Как узнать статус openssl-1.0.0 в Ubuntu?

Ответы [ 3 ]

26 голосов
/ 22 ноября 2011

Люди из 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_, Используя эти опции, можно выбрать, например, SSLv23_server_method () и иметь возможность согласовывать все возможные клиенты, но разрешать только новые протоколы, такие как SSLv3 или TLSv1.

3 голосов
/ 26 июня 2012

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

0 голосов
/ 17 декабря 2013

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

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

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

...