如何在不使用自制软件的情况下更新 Python 2.7 的 OpenSSL



当使用Python 2.7.14执行不同的脚本时,我不断遇到错误,这些错误似乎会导致我的OpenSSL安装。

例如,当使用requests时:

requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:661)

我在:

  • 蟒蛇 2.7.14
  • MacOS 莫哈韦版本 10.14.3
  • 不使用自制软件!(并且宁愿不这样做)

Mac OS 使用 LibreSSL:

$ openssl version -a
LibreSSL 2.6.5
built on: date not available
platform: information not available
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: information not available
OPENSSLDIR: "/private/etc/ssl"
$ which openssl
/usr/bin/openssl

但是,我的Python安装(来自源代码)都使用OpenSSL- 两个不同的版本:

$ python2.7 -c 'import ssl; print ssl.OPENSSL_VERSION'
OpenSSL 0.9.8zh 14 Jan 2016
$ python3.7 -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.1.0i  14 Aug 2018

我想更新与Python 2.7一起使用的OpenSSL,而不使用homebrew(也不是Anaconda),也不使用其他包,例如pyOpenSSL

我能在网上找到的大多数解决方案都建议使用homebrew,因此不能回答我的问题:

  • 在 python 2.7 中更新 openssl(英语:openssl
  • )
  • https://apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x
  • https://medium.com/@katopz/how-to-upgrade-openssl-8d005554401

我的所有 Python 版本都没有使用homebrew安装,我想保持干净,以免使我的操作系统设置进一步复杂化。

考虑到安装了不同版本的OpenSSL,我应该遵循这个建议并将Python 2.7链接到较新的OpenSSL版本吗?

  • 这是前进的最佳方式吗?
  • 可能出现什么问题?
  • 什么是可行的替代方案?
  • 有什么好的资源可以学习在Mac上导航SSL-Python丛林吗?

鉴于当前安装的版本是 python.org 本身提供的版本,只需再次下载并安装最新版本就足够了。鉴于 2.7.14 二进制文件上的旧版 OpenSSL,看起来这是针对 MacOS 附带的旧版本编译的。在 2.7.15 中,这已更改,如下载页面上所示:

macOS 用户注意:从 2.7.15 开始,所有 python.org macOS 安装程序都附带了 OpenSSL 的内置副本

因此,您只需安装 python.org 提供的正式版本的2.7.15,就可以期望在Python 2.7中拥有最新的OpenSSL。请注意,您已经拥有的 Python 3.7 也是如此。

相关内容

最新更新