仅针对extra-index-url索引pip ssl证书

时间:2016-11-04 11:54:27

标签: ssl pip ssl-certificate

我为内部项目设置了内部pypi服务器。

它在https://<USER>:<PASS>@<INTERAL>/pypi托管,并附有自签名证书。

extra-index-url ~/.pip/pip.conf中使用cert = ...的中央pypi服务器外,我还可以使用此存储库。由于我的服务器的证书是自签名的,并且pip没有使用经过认证的系统范围(密钥链),我已经在配置文件中使用extra-index-url = https://<USER>:<PASS>@<INTERAL>/pypi cert = /path/to/cert.pem 了解它:< / p>

pip install

现在,无论何时使用https://pypi.python.org安装内容,我都会收到警告,证明无法验证$ pip install <PACKAGE-NAME> Collecting <PACKAGE-NAME> Could not fetch URL https://pypi.python.org/simple/<PACKAGE-NAME>/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) - skipping 的证书:

img{
  width:500px;
  height 100px;
  top:10px;
  left:10px;
  -webkit-box-shadow: 10px 10px 5px 0px rgba(0,0,0,1);
  -moz-box-shadow: 10px 10px 5px 0px rgba(0,0,0,1);
  box-shadow: 10px 10px 5px 0px rgba(0,0,0,1);

}

#image{
   clip: rect(20px, 20px, 20px 20px);
}

有没有办法告诉pip只使用自签名证书 作为extra-index-url存储库?

1 个答案:

答案 0 :(得分:1)

Pip使用它的证书包(文件),可以通过运行找到:

python -m pip._vendor.requests.certs

捆绑包只是一个接一个连接证书的文件。我们想告诉pip使用那些AND我们的证书, 所以使用

生成一个新文件
cat $(python -m pip._vendor.requests.certs) /path/to/my/cert.pem > /path/to/my/bundle.pem

并确保您的.pip/pip.conf文件包含以下内容:

[global]
extra-index-url = https://user:pass@my-pypi.com
cert = /path/to/my/bundle.pem

最后,您可能希望定期更新/path/to/my/bundle.pem(在cronjob或其他任何内容中)。

其他说明

我也遇到以下错误:

SubjectAltNameWarning: Certificate for my-pypi.com has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 for details.)

通常,您可以创建类似以下内容的证书:

openssl req -new -x509 -nodes -key my.key -out cert.csr -days 365

而是将openssl.cnf(可能在/etc/pki/tls/openssl.cnf)复制到您的工作目录,并通过在文件末尾添加以下内容来添加扩展名:

[ san_env ]
subjectAltName=DNS:mypypi.com

并使用

生成证书
openssl req -new -x509 -nodes -key my.key -out cert.csr -days 365 -config openssl.cnf -extensions san_env

此外,pip希望您的证书采用不同的格式,可以使用

生成
openssl x509 -inform der -in cert.cer -out cert.pem

如上所述,此文件cert.pem可以与python ca包连接,以生成自定义包。