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

2024-06-06 19:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

  1. Python2.7.11版本为0.9.7m:

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

    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.

(*-是的,这就是错误消息的样子。在句子中间删掉了。)

如能就解决这一问题提出任何建议,将不胜感激。我想让Python引用OpenSSL版本1.0.2h,而不是过时的版本0.9.7m

我曾多次尝试使用各种post/blog来安装Python和OpenSSL,但都没有成功。


Tags: no版本you消息sslwhichisversion
3条回答

将此作为解决方法:

export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1

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

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

如果您愿意承担风险,那么CRYPTOGRAPHY_ALLOW_OPENSSL_098环境变量会将错误降级为弃用警告。在过去的一天里,我也在OSX上遇到过这个问题,所以最近发生了一些变化。

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

首先,您可以brew安装新版本的open 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

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

这个问题几乎要了我的命!!!! 最后,我的人解决了这个问题,只有降低包的版本“paramiko”从2.*到1.*(像1.15.4我设置)才能解决!

相关问题 更多 >