关于python:InsecurePlatformWarning:真正的SSLContext对象不可用。 这可以防止urllib3正确配置SSL

InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately

本问题已经有最佳答案,请猛点这里访问。

尝试使用以下代码通过python请求执行REST GET,我收到了错误。

代码片段:

1
2
3
4
import requests
header = {'Authorization': 'Bearer...'}
url = az_base_url + az_subscription_id + '/resourcegroups/Default-Networking/resources?' + az_api_version
r = requests.get(url, headers=header)

错误:

1
2
3
4
5
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79:
          InsecurePlatformWarning: A true SSLContext object is not available.
          This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail.
          For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning

我的python版本是2.7.3。 我尝试安装urllib3并请求[安全],因为其他线程建议,我仍然有同样的错误。

想知道是否有人可以提供一些提示?


文档给出了所需要的公平指标。但是requests允许我们跳过几个步骤:

你只需要安装security包附加功能(感谢@admdrew指出)

1
$ pip install requests[security]

或者,直接安装它们:

1
$ pip install pyopenssl ndg-httpsclient pyasn1

然后,请求会自动将pyopenssl注入urllib3

如果您使用的是ubuntu,则可能在安装pyopenssl时遇到问题,您需要这些依赖项:

1
$ apt-get install libffi-dev libssl-dev


如果您无法将Python版本升级到2.7.9,并且想要禁止警告,

您可以将"请求"版本降级到2.5.3:

1
pip install requests==2.5.3

2.6.0中引入了Bugfix披露/警告