web-dev-qa-db-ja.com

UbuntuおよびSSLv2_methodの未定義のシンボル

Opensslのパッケージバージョンに正規の名前変更シンボルがありますか? openssl-1.0.0e.tar.gz(openssl.orgから直接ダウンロード)を最初からコンパイルすると、必要なシンボルが表示されますが、Python(と私)はそれを見つけることができません。パッケージ版で。

この問題の診断方法の詳細については、以下をお読みください...

Python 2.6.1をコンパイルしようとしています。上記のエラーメッセージが表示されます。この古い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のステータスを把握する方法

24
Setjmp

Ubuntuの人々は、プロトコルに 既知のセキュリティ問題 があるため、SSLv2サポートなしでOpenSSLを構築します。そのため、ライブラリを自分でコンパイルするときに見つけることができても、ライブラリで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_CTX_set_options()またはSSL_set_options()関数のSSL_OP_NO_SSLv2、SSL_OP_NO_SSLv3、SSL_OP_NO_TLSv1オプションを使用して後で制限できます。 これらのオプションを使用して、たとえば、 SSLv23_server_method()およびすべての可能なクライアントとネゴシエートできるが、SSLv3やTLSv1などの新しいプロトコルのみを許可する

26
indiv

このブログ投稿 のパッチを利用して、Ubuntu 12.04でSSLサポート付きのPython 2.6をビルドできました。

3
Carl Meyer

私の修正は、ssl2サポートなしでopensslをインストールすることでした

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

次に、ライブラリにリンクされているものを/ usr/sslにインストールします。できます..

0