Python pip安装失败SSL:证书\u验证\u在windows上失败

Python pip安装失败SSL:证书\u验证\u在windows上失败,python,ssl,pip,ssl-certificate,Python,Ssl,Pip,Ssl Certificate,我正在Windows上使用公司计算机。我有自己的索引,托管在https网站上。我知道我可以使用可信主机避免使用https。但我想用它 我正在尝试按如下方式安装软件包: pip install -i https://pathtoindex/simple/ pkgname 但我得到了以下错误: Could not fetch URL [...] There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY

我正在Windows上使用公司计算机。我有自己的索引,托管在https网站上。我知道我可以使用
可信主机
避免使用https。但我想用它

我正在尝试按如下方式安装软件包:

 pip install -i https://pathtoindex/simple/ pkgname
但我得到了以下错误:

Could not fetch URL [...] There was a problem confirming the ssl
certificate: [SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed (_ssl.c:590) - skipping
我也尝试从Mozilla下载我的域的.pem认证文件,我尝试了以下命令:

pip --cert dirtocert/cert.pem install -i https://pathtoindex/simple/ pkgname

但这也不起作用,仍然会出现相同的错误。

您需要根CA证书才能获得它为您的服务提供的证书。要么是自行签署的,要么是由商业供应商提供的。在这两种情况下,您的IT部门都应该能够提供证书

您还可以使用openssl查看您的证书:

openssl s_client -showcerts -connect your-domain.com:443
(*或者,您可以使用浏览器进行此操作。单击地址栏中的锁,然后选择“详细信息”(或类似内容)…)


在“服务器证书”下面应该有一个“颁发者”部分。如果颁发者是您的公司,则您最有可能使用自签名证书。如果是其他内容(如COMODO、StartCom等),您可以使用他们的根证书或中间CA证书。

您引用的.pem文件是什么?你为你的证书下载了相应的CA文件?这是我有点模糊的地方,我所做的只是在Mozilla上从承载pip索引的https网站下载。你能发布你所指的索引的url吗?是私人的吗?您使用自签名证书吗?我创建了一个自定义索引。它托管在内部网上。证书是由IT部门提供的。我进行了验证,发行人是我的公司。然而,我仍然无法让它工作,您描述的过程似乎与我上面所做的非常相似。代理是否有可能在这里发挥作用?谢谢。但是代理不应该是一个问题,因为承载pip索引的网站位于intranet内,对吗?您可以使用openssl测试您的连接
openssl s_客户端-连接您的域。tld:443
。和
openssl s_client-connect-CAfile cacert.pem您的域。tld:443
,以提供要检查的CAcertificate。指向完整文档的链接。我尝试了两个命令,我相信在您的第二个命令中,-connect应该出现在您的域之前。无论如何,对于这两种情况,我都会得到以下结果:
验证错误:num=19:证书链中的自签名证书
。我还注意到输出显示了一个服务器证书,我注意到该证书正是我在.pem文件中使用的。没关系,我让它工作了,我找到了浏览器使用的证书。问题是我使用的是我网站上的证书。