Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu和SSLv2_方法的未定义符号_Ubuntu_Openssl_Symbols_Ubuntu 11.10 - Fatal编程技术网

Ubuntu和SSLv2_方法的未定义符号

Ubuntu和SSLv2_方法的未定义符号,ubuntu,openssl,symbols,ubuntu-11.10,Ubuntu,Openssl,Symbols,Ubuntu 11.10,规范化重命名符号是否在其openssl包版本中,如果是,其目的是什么?当我从头编译openssl-1.0.0e.tar.gz(直接从openssl.org下载)时,我看到了必要的符号,但Python(和我)似乎在打包版本中找不到它 请继续阅读,了解有关我如何诊断此问题的更多信息 我试图在Ubuntu11.10上编译Python2.6.1,并得到上面的错误消息。我之所以使用这种较旧的Python,是因为我试图使我的Ubuntu安装与生产系统100%兼容,以便于开发 表演时 strace -feop

规范化重命名符号是否在其openssl包版本中,如果是,其目的是什么?当我从头编译openssl-1.0.0e.tar.gz(直接从openssl.org下载)时,我看到了必要的符号,但Python(和我)似乎在打包版本中找不到它

请继续阅读,了解有关我如何诊断此问题的更多信息

我试图在Ubuntu11.10上编译Python2.6.1,并得到上面的错误消息。我之所以使用这种较旧的Python,是因为我试图使我的Ubuntu安装与生产系统100%兼容,以便于开发

表演时

strace -feopen make -j4 |& grep "libssl"
我发现我正在使用一个有前途的文件:

[pid 22614]打开(“/usr/lib/x86_64-linux-gnu//libssl.so”,O_RDONLY)=7

运行nm时,此文件没有符号。但是.a文件有一个类似的文件:

00000000000000 30吨SSLv23_法

libssl1.0.0-dbg软件包是通过synaptic安装的,但是当我列出这个软件包的已安装文件时,我看到的是“已安装文件列表仅适用于已安装的软件包”,这显然是一个Ubuntu错误。所以我不知道我该如何检查这个符号。所以

然而,我怀疑他们在任何情况下都将SSLv2_方法重命名为SSLv23_方法


如何继续了解Ubuntu的openssl-1.0.0的状态

Ubuntu用户在不支持SSLv2的情况下构建OpenSSL,因为该协议已经实现。这就是为什么你在他们的库中找不到
SSLv2_方法
,即使你自己编译库时也能找到它

Ubuntu构建日志是公开的。您可以在日志中看到,库配置了
-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\u方法的可用性并不意味着客户端将能够使用SSLv2连接到服务器。OpenSSL文档简要介绍:

以后可以使用 的SSL_OP_NO_SSLv2、SSL_OP_NO_SSLv3、SSL_OP_NO_TLSv1选项 SSL_CTX_set_options()或SSL_set_options()函数使用这些 选项可以选择,例如SSLv23_server_method()和 能够与所有可能的客户协商,但只允许更新 协议,如SSLv3或TLSv1。


在中的补丁的帮助下,我能够在Ubuntu12.04上构建具有SSL支持的Python 2.6。

我的修复程序是在没有ssl2支持的情况下安装openssl

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

然后在/usr/ssl中安装任何链接到库的东西。它很管用..

很到位!感谢您回答如此集中的问题@基里尔·伊古姆:。。。你注意到卡尔·迈耶给出的另一个答案了吗?@indiv它看起来更像一个黑客。我希望从官方ppas安装一些其他库。但我想这是最好的了。@kirill_igum:哦,我明白了。好的,您可以自己编译包含SSLv2的OpenSSL,并将其安装到您的机器上。下载OpenSSL源代码,
/configure
sudo make install
。我没有亲自尝试过,但想不出由此产生的任何问题(除了重新启用已知安全问题的弃用算法)应该可以很好地处理SSLv2缺少的支持。您找到了在Ubuntu上使用SSL支持构建Python2.6的解决方法吗?另请参见Boost Bug Trac。希望基于
OPENSSL\u NO\u SSL3
提高对SSLv3的保护性使用。