使用本地OpenSSL构建Python 2.7:无法连接到HTTPS站点(PyPI)

时间:2019-03-24 18:48:07

标签: python python-2.7 ssl openssl

在前面让我说,请不要建议我切换到Python3。这不是这个问题的意思。另外,请注意,这个问题不是关于如何在Python构建过程中找到OpenSSL标头/库的。据我所知(见下文),我已经做到了。

我正在最近的GNU / Linux发行版上构建自己的Python 2.7副本(我已经尝试了2.7.15和2.7.16并获得了相同的结果)。我想将其链接到我自己的OpenSSL构建副本(我尝试过1.1.1a和1.1.1b)。请注意,我已将此OpenSSL库与其他应用程序一起使用,它似乎已正确构建。

编译,链接和安装都很好:我已经弄清了所有配置,设置了共享库路径,等等。编译并安装后,我可以毫无问题地加载ssl模块:

$ python
Python 2.7.15 (default, Mar 24 2019, 14:08:05)
[GCC 8.1.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> print(ssl.OPENSSL_VERSION)
OpenSSL 1.1.1b  26 Feb 2019

但是,当我尝试使用此python通过setup.py安装一些需要下载文件的软件包时,它将无法下载。我提取了一个测试:

from setuptools.package_index import PackageIndex
PackageIndex().process_url(url='https://pypi.org/simple/backports.functools_lru_cache/',
                           retrieve=True)

给出此错误:

Download error on https://pypi.org/simple/backports.functools_lru_cache/: [X509] system lib (_ssl.c:3027) -- Some packages may not be found!

我不确定下一步该怎么做;错误消息指向X509,所以证书处理可能有问题吗?我在二进制文件上使用了strace,可以看到它正在 找到我的系统证书目录(/etc/ssl)和CRT文件(/etc/ssl/certs/ca-certificates.crt)。

也:如果我针对我的系统版本的OpenSSL进行编译,它将起作用。而且,如果我针对本地构建的LibreSSL实例进行编译,它也可以工作。

我不知道从这里去哪里,试图了解问题所在。帮助吗?

0 个答案:

没有答案