擅长:python、mysql、java
<p>默认情况下,pip使用标准库ssl模块(除非您还安装了前面提到的额外库)。在python2.7.9和python3.2(ish,我相信是3.2,可能是3.1)之前,标准库中的ssl模块缺乏控制与ssl相关的某些设置的能力。在</p>
<p>其中一些设置:</p>
<ul>
<li>如果不显式地固定到TLSv1.0,就不能禁用SSLv3(也不能固定到TLSv1.1或TLSv1.2)。在</li>
<li>不能禁用TLS压缩。在</li>
<li>您不能使用SNI,这会迫使您尝试对话的每个主机不使用SNI(或者您需要为这些主机禁用TLS验证)。在</li>
<li>不能告诉OpenSSL在服务器显式地给它的链上选择一个较短但仍然可信的链。这意味着,如果底层证书存储删除了弱的1024位根证书,那么一些原本可以验证的服务器将失败。在</li>
<li>即使在更老的python(2.6)上,您也不能设置密码,这意味着您只能使用默认的OpenSSL(通常会导致不安全或不太理想的选择)。在</li>
</ul>
<p>至于你该怎么做,这完全取决于你自己。如果您是从PyPI本身安装的,那么这些东西很多都无关紧要,因为我们在服务器端禁用了它们,而不是依赖客户端来实现它们。然而,请求(pip用于访问存储库的底层库)会发出这些警告(pip不会使它们静音),因为PyPI通常不是您要连接到的唯一位置,而且这些附加的位置可能会也可能不会采取与PyPI相同的预防措施。在</p>
<p>来源:我是一个核心pip开发人员和PyPI管理员。在</p>