尝试解决我遇到的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脚本出现问题。以下是错误消息摘录:
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,但没有任何运气。
答案 0 :(得分:16)
将此作为解决方法使用:
export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1
这似乎是最近对hazmat加密库的检查。您可以在以下位置查看源代码:
如果您愿意承担风险,CRYPTOGRAPHY_ALLOW_OPENSSL_098
环境变量会将错误降级为弃用警告。我在过去的一天也在OS X上遇到了这个问题,所以最近发生了一些变化。
答案 1 :(得分:6)
您可以安装使用较新版本openssl的python版本。
首先,您可以brew安装新版本的开放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
答案 2 :(得分:-1)
这个问题几乎杀了我!!!! 最后我的家伙解决了这个问题,只是将套餐“paramiko”的版本从2. *降低到1. *(就像我设置的1.15.4一样)可以解决!
答案 3 :(得分:-1)
如果您收到You are linking against OpenSSL 1.0.0
,请使用export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1
环境变量绕过它。谢谢@braddock
答案 4 :(得分:-2)
没有解决,上述任何一项都不适合我。我最终采取了一种更简单,更简单的方法......
https://www.python.org/downloads/mac-osx/
sudo pip install --upgrade pyOpenSSL