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

use*_*298 329 python rest ssl

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

代码片段:

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)
Run Code Online (Sandbox Code Playgroud)

错误:

/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
Run Code Online (Sandbox Code Playgroud)

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

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

nat*_*n-m 548

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

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

$ pip install requests[security]
Run Code Online (Sandbox Code Playgroud)

或者,直接安装它们:

$ pip install pyopenssl ndg-httpsclient pyasn1
Run Code Online (Sandbox Code Playgroud)

请求之后就会自动注入pyopensslurllib3


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

$ apt-get install libffi-dev libssl-dev
Run Code Online (Sandbox Code Playgroud)

  • 你也可以`pip install requests [security]`而且只能`import requests`. (26认同)
  • 不要忘记`--upgrade`选项,否则你可能实际上没有安装任何东西.如果您希望系统环境安全,则需要进行安装.所以`sudo pip install --upgrade pyopenssl ndg-httpsclient pyasn1 pip`在Fedora 20上为我工作,尽管卸载和升级distutils安装的`pyopenssl`包的弃用警告. (9认同)
  • 上面的答案是详细的,但@admdrew提供了最简单的解决方案,最少的头痛. (3认同)
  • @hobs关于`sudo pip install`,例如http://stackoverflow.com/questions/29310688/sudo-pip-install-vs-pip-install-user作为一般而非牢不可破的规则,你应该使用` pip install --user`或者最好使用virtualenv来保存所有内容并固定. (3认同)

rai*_*tes 69

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

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

pip install requests==2.5.3
Run Code Online (Sandbox Code Playgroud)

2.6.0中引入了Bugfix披露/警告

  • 虽然这**有效*,但这可能不是*最佳答案. (51认同)
  • 这种差异隐藏了2.6.0包含*安全修复*的事实; 降级让你暴露. (24认同)
  • admdrew对上述答案的评论是一个更好,更简单的解决方案.只需`pip install requests [security]` (7认同)
  • 对于大多数情况,上述答案可能更好,但是这一个是唯一适用于具有您无法控制的本机库的共享主机的情况.`请求[安全]`不起作用,但旧版本没有. (3认同)
  • 如果**pip本身**受"InsecurePlatformWarning"的影响并且无法从PyPI安装任何东西,可以使用[本分步指南](/sf/answers/3820789101/)修复它 - - 适用于较旧的Linux系统.. @Brian (2认同)

归档时间:

查看次数:

297384 次

最近记录:

7 年,7 月 前