微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ubuntu和SSLv2_method的未定义符号

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

阅读关于我如何诊断这个问题的更多信息…

我正在尝试在Ubuntu 11.10上编译Python 2.6.1,并得到上面的错误信息。 我使用这个较老的Python的原因是,我试图使我的Ubuntu安装与生产系统100%兼容,用于开发目的。

表演时

未修饰的Microsoft符号:SomeClass ::`vftable'{for`Foo :: Bar'}

什么是__ksymtab? 在linux内核中

使用g ++的符号可见性

连接共享库g ++时出现奇怪的符号

通过DbgHelp获取来自PDB的类方法的访问说明符?

strace -feopen make -j4 |& grep "libssl"

我看到我正在使用一个有前途的文件

open(“/ usr / lib / x86_64-linux-gnu // libssl.so”,O_RDONLY)= 7

运行nm,这个文件没有符号。 但.a文件也有类似的情况:

0000000000000030 T SSLv23_method

软件包libssl1.0.0-dbg是通过synaptic安装的,但是当我列出这个软件包的安装文件时,我看到的只是“已安装文件的列表只能用于已安装的软件包”,这显然是一个Ubuntu的bug。 所以我不知道我应该怎样检查.so中存在哪些符号。

不过,我怀疑他们已经在任何情况下将SSLv2_method重命名为SSLv23_method。

如何进一步弄清楚Ubuntu的openssl-1.0.0的状态?

GNU链接器:替代–version脚本列出导出的符号在命令行?

如何在Visual Studio 2008中使用Windows符号包?

如何将函数地址转换为符号

将运行Linux进程的内存地址范围转换为目标文件中的符号?

如何从包含子目录的给定pathrecursion加载所有符号文件

Ubuntu的人建立OpenSSL没有SSLv2的支持,因为协议有已知的安全问题 。 所以这就是为什么你不能在自己的库中找到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。

我的修复是安装openssl没有ssl2的支持

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐