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

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

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

  1. Python 2.7.11的版本为0.9.7m:

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

     openssl version OpenSSL 1.0.1h 5 Jun 2014 
  3. 最近编译/安装:

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

我最近升级了我的OS X 10.11.5。 在这个过程中,导致了以前工作的Python脚本的问题。 以下是错误消息片段:

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. 

(* – 是的,这是错误信息的样子,在句子中间被裁掉。)

任何build议,解决这个问题将不胜感激。 我想要的是Python引用OpenSSL版本1.0.2h与过时版本0.9.7m。

我已经尝试过多次使用各种post/博客来安装Python和OpenSSL,但没有任何运气。

你可以安装一个使用更新版本的openssl的python版本。

首先,您可以安装新版本的开放式SSL

 brew update brew install openssl brew link --force openssl 

你应该看到一个更新的版本

 openssl version -a 

然后,你可以安装不同版本的Python,使用更新版本的openssl。 如果你使用pyenv ,那将是:

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

你可以在这里find更多关于安装一个brew版本的openssl的python版本的信息: https : //github.com/yyuu/pyenv/wiki/Common-build-problems

使用此作为解决方法:

 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环境variables会将错误降级为弃用警告。 我也在前一天在OS X上遇到了这个问题,所以最近有些事情发生了变化。

这个问题几乎杀了我! 最后,我的家伙解决了这个问题,只需将包“paramiko”的版本从2. *降低到1. *就可以解决这个问题。

如果你正在You are linking against OpenSSL 1.0.0那么使用export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1环境variables绕过它。 谢谢@ braddock

解决没有啥,以上都没有为我工作。 我最终采取了一个更简单和简单的方法….

  1. 从官方网站安装Python 2.7.13,它实际上安装为默认的Python,replace旧的Python系统范围。

https://www.python.org/downloads/mac-osx/

  1. python安装后升级openssl。

sudo pip安装 – 升级pyOpenSSL

  1. 你将不得不重新安装所有的Python模块(因为你replace了python),我强烈build议使用pip。 几分钟的安装后,我的默认OSX python升级,我有openssl升级,我有我所有的模块(包括Django运行)。