阅读有关我如何诊断这个问题的更多信息…
我试图在Ubuntu 11.10上编译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
0000000000000030 T SSLv23_method
软件包libssl1.0.0-dbg是通过突触安装的,但是当我列出这个软件包的安装文件时,我看到的是“安装的文件列表仅适用于安装的软件包”,这显然是一个Ubuntu的错误。所以我不知道我应该如何检查.so中存在哪些符号。
但是,我怀疑他们在任何情况下都将SSLv2_method重命名为SSLv23_method。
如何解决Ubuntu的openssl-1.0.0的状态?
Ubuntu构建日志是公开的available.您可以在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文档简要discusses this situation:
The list of protocols available can later be limited using the
SSL_OP_NO_SSLv2,SSL_OP_NO_SSLv3,SSL_OP_NO_TLSv1 options of the
SSL_CTX_set_options() or SSL_set_options() functions. Using these options it is possible to choose e.g. SSLv23_server_method() and be able to negotiate with all possible clients,but to only allow newer protocols like SSLv3 or TLSv1.