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 之间切换