gpt4 book ai didi

python - 如何在 Ubuntu Trusty 上安全地使用 pip(带 SSL)?

转载 作者:太空狗 更新时间:2023-10-29 21:46:08 27 4
gpt4 key购买 nike

问题是,如何在 Ubuntu Trusty 上使用 pip 安全地安装软件包?当然,我需要澄清为什么我认为它不安全。

urllib3 在 Python 2.7.9 之前,如果您在没有安装一些额外的 openssl 相关 python 库的情况下发出 https 请求,则会给出 InsecurePlatformWarning。这是一个完善的问答:

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

问题是,如果你安装 pip 版本 6 左右,它会开始给你这个警告,当你安装任何东西时。从阅读问题的官方答案:

https://urllib3.readthedocs.org/en/latest/security.html#pyopenssl

听起来问题出在 Python ssl 库上。 Pip 是不是刚从最新版本的 openssl 切换到 Python ssl 库?我的猜测(也许是一个错误的猜测)是 pip 之前使用了 Python 库,它只是使用了一个甚至没有给出警告的旧版本的 urllib。所以它一直都是不安全的(尽管特别令人担忧的漏洞似乎最近才出现)。

好吧,如果这种情况,那么 Ubuntu 上的 pip 库存版本是不安全的。我不能用它来安全地安装东西以确保安全。没关系,我可以从 Ubuntu 的 repo 安装相同的东西,它使用 GPG 验证包:

http://packages.ubuntu.com/search?keywords=python-ndg-httpsclient

除了以上仅在 Utopic 中可用。在 Trusty 上,我似乎被卡住了。

那到底是怎么回事呢?我是否必须掷骰子并不安全地安装这些东西一次,然后才安全地使用 pip?还是我完全误解了情况?

最佳答案

pip 默认使用标准库 ssl 模块(除非您还安装了您提到的额外库)。在 Python 2.7.9 和 Python 3.2(ish,我相信它是 3.2,可能是 3.1)之前,标准库中的 ssl 模块缺乏控制与 ssl 相关的某些设置的能力。

其中一些设置:

  • 如果不明确固定到 TLSv1.0(并且不能固定到 TLSv1.1 或 TLSv1.2),则不能禁用 SSLv3。
  • 您不能禁用 TLS 压缩。
  • 您不能使用 SNI,这会迫使您尝试与之通信的每个主机都不使用 SNI(或者您需要为这些主机禁用 TLS 验证)。
  • 您不能告诉 OpenSSL 更喜欢较短但仍受信任的链,而不是服务器明确提供给它的链。这意味着如果底层证书存储删除弱的 1024 位根证书,一些原本可以验证的服务器将失败。
  • 在甚至更旧的 Python (2.6) 上,您也无法设置密码,这意味着您只能使用任何默认的 OpenSSL(通常会导致不安全或达不到最佳选择)。

至于你应该做什么,这真的取决于你。如果你是从 PyPI 本身安装的,那么很多这些东西都无关紧要,因为我们在服务器端禁用它们而不是依赖客户端来实现它们。但是请求(底层库 pip 用于访问存储库)会引发这些警告(并且 pip 不会使它们静音),因为 PyPI 通常不是您要连接的唯一位置,而这些其他位置可能会或可能不会占用与 PyPI 具有相同的预防措施。

来源:我是 PyPI 的核心 pip 开发者和管理员。

关于python - 如何在 Ubuntu Trusty 上安全地使用 pip(带 SSL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com