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のステータスを把握する方法
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などの新しいプロトコルのみを許可する
このブログ投稿 のパッチを利用して、Ubuntu 12.04でSSLサポート付きのPython 2.6をビルドできました。
私の修正は、ssl2サポートなしでopensslをインストールすることでした
./config --prefix=/usr enable-shared -no-ssl2
次に、ライブラリにリンクされているものを/ usr/sslにインストールします。できます..