OS X 上的 Python 和 OpenSSL 版本参考问题

Posted

技术标签:

【中文标题】OS X 上的 Python 和 OpenSSL 版本参考问题【英文标题】:Python and OpenSSL version reference issue on OS X 【发布时间】:2016-10-07 23:41:23 【问题描述】:

尝试解决我遇到的 OpenSSL 版本问题。

我的 Mac 上似乎有三个不同版本的 OpenSSL。

    Python 2.7.11 有 0.9.7m 版本:

    python -c "import ssl; print ssl.OPENSSL_VERSION"
    OpenSSL 0.9.7m 23 Feb 2007
    

    在航站楼:

    openssl version
    OpenSSL 1.0.1h 5 Jun 2014
    

    最近编译/安装:

    /usr/local/ssl/bin/openssl
    OpenSSL> version
    OpenSSL 1.0.2h  3 May 2016
    OpenSSL>
    

我最近将我的 OS X 升级到了 10.11.5。在此过程中,导致以前工作的 python 脚本出现问题。下面是错误信息sn-p:

Python 错误信息:

 You are linking against OpenSSL 0.9.8, which is no longer *
 RuntimeError: You are linking against OpenSSL 0.9.8, which is no longer support by the OpenSSL project. You need to upgrade to a newer version of OpenSSL.

(* - 是的,这就是错误消息的样子。它在句子中间被修剪了。)

任何有关解决此问题的建议将不胜感激。我想让 Python 引用 OpenSSL 版本 1.0.2h 与过时的版本 0.9.7m。

我已经尝试安装 Python 和 OpenSSL 多次,使用各种帖子/博客作为指导,但没有任何运气。

【问题讨论】:

“我已经尝试安装 Python 和 OpenSSL 很多次,使用各种帖子/博客作为指导,但没有任何运气”——那么要么是博客文章错误,要么与你的 OS X 版本不匹配,或者你没有正确遵循说明。不幸的是,如果没有进一步的细节,不知道到底出了什么问题。在这种情况下,添加另一个关于如何安装您自己的 Python 和 OpenSSL 的描述是没有意义的。 【参考方案1】:

将此作为解决方法:

export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1

这似乎是对危险品密码库的最新检查。您可以在以下位置查看源代码:

https://github.com/pyca/cryptography/blob/master/src/cryptography/hazmat/bindings/openssl/binding.py#L221

如果您愿意冒险,CRYPTOGRAPHY_ALLOW_OPENSSL_098 环境变量会将错误降级为弃用警告。前一天我也在 OS X 上遇到了这个问题,所以最近发生了一些变化。

【讨论】:

值得注意的是,密码学 1.3 是最后一个在 0.9.8 的帮助下工作的版本,而 1.4 是最后一个完全可以工作的版本 - github.com/pyca/cryptography/issues/2836 - “允许禁用它这个版本”。 这应该是答案 如果您遇到错误,请使用 export CRYPTOGRAPHY_ALLOW_OPENSSL_100=1 - 您正在链接 OpenSSL 1.0.0,OpenSSL 项目不再支持该版本。您需要升级到更新版本的 OpenSSL【参考方案2】:

您可以安装使用较新版本的 openssl 的 python 版本。

首先你可以brew安装一个新版本的open SSL

brew update
brew install openssl
brew link --force openssl

您应该会看到更新的版本

openssl version -a

然后您可以安装使用较新版本的 openssl 的不同版本的 python。如果你使用pyenv,那就是:

CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.4.3

您可以在此处找到有关使用 brew 安装版本的 openssl 安装 python 版本的更多信息:https://github.com/yyuu/pyenv/wiki/Common-build-problems

【讨论】:

以上是关于OS X 上的 Python 和 OpenSSL 版本参考问题的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 10.14.3下如何给Python2.7.10安装MySQL-Python

在 Mac OS X 上的 python 2.7 和 python 3.5 之间切换

使用 Homebrew 在 OS X 上更新 OpenSSL

在 OS X 上构建多架构 OpenSSL

OS X 上的 PyQt4 和 Python 3.2

如何在 mac os x (10.9) 上的 python 中安装 libgpuarray 和 clBLAS?