当前位置: 首页>>技术教程>>正文


Ubuntu和SSLv2_method的未定义符号

, , ,

问题描述

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

继续阅读有关我如何诊断此问题的更多信息…

我正在尝试在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

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

0000000000000030 T SSLv23_method

软件包libssl1.0.0-dbg是通过synaptic安装的,但是,当我列出该软件包的已安装文件时,我看到的只是“已安装文件的列表仅适用于已安装的软件包”,这显然是Ubuntu的错误。因此,我不确定如何检查.so中存在哪些符号。

但是,我怀疑他们在任何情况下都将SSLv2_method重命名为SSLv23_method。

如何确定Ubuntu的openssl-1.0.0的状态?

最佳方法

由于该协议具有known security issues,因此Ubuntu人们在不支持SSLv2的情况下构建了OpenSSL。因此,即使您自己编译该库也可以在它们的库中找不到SSLv2_method

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.

次佳方法

我能够借助this blog post中的补丁在Ubuntu 12.04上构建具有SSL支持的Python 2.6。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10300.html,未经允许,请勿转载。