自签名证书颁发机构pip
/conda
在广泛记录了Git的类似问题(如何使git接受自签名证书?)之后,在这里,我们再次处于具有代理的企业防火墙后面,该代理为我们提供了我们应该信任的MitM“攻击”,并且:
切勿禁用所有SSL验证!
这造成了不良的安全文化。不要做那个人。
tl; dr
pip config set global.cert path/to/ca-bundle.crt
pip config list
conda config --set ssl_verify path/to/ca-bundle.crt
conda config --show ssl_verify
git config --global http.sslVerify true
git config --global http.sslCAInfo path/to/ca-bundle.crt
但是我们到ca-bundle.crt
哪里去呢?
获取最新的CA Bundle
cURL发布与Mozilla Firefox捆绑在一起的证书颁发机构的摘录
https://curl.haxx.se/docs/caextract.html
我建议您cacert.pem
在文本编辑器中打开此文件,因为我们需要将自签名CA添加到该文件中。
证书是符合X.509的文档,但是可以通过几种方式将它们编码到磁盘。以下文章是不错的阅读,但简短的版本是我们正在处理base64编码,该扩展在文件扩展名中通常称为PEM。您将看到它具有以下格式:
----BEGIN CERTIFICATE----
....
base64 encoded binary data
....
----END CERTIFICATE----
https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-m
获得我们的自签名证书
以下是有关如何获取我们的自签名证书的一些选项:
- 通过OpenSSL CLI
- 通过浏览器
- 通过Python脚本
通过OpenSSL CLI获取我们的自签名证书
/unix/451207/how-to-trust-self-signed-certificate-in-curl-command-line/468360#468360
echo quit | openssl s_client -showcerts -servername "curl.haxx.se" -connect curl.haxx.se:443 > cacert.pem
通过浏览器获取我们的自签名证书颁发机构
由于有了这个答案和链接的博客,它显示了步骤(在Windows上)如何查看证书,然后使用base64 PEM编码选项复制到文件。
复制此导出文件的内容,并将其粘贴到cacerts.pem
文件末尾。
为了保持一致性,请重命名此文件cacerts.pem
->ca-bundle.crt
并将其放置在简单的位置,例如:
%USERPROFILE%\certs\ca-bundle.crt
$HOME/certs/cabundle.crt
通过Python获取我们的自签名证书颁发机构
感谢以下所有出色的答案:
如何从python中的请求获取响应SSL证书?
我整理了以下内容,以尝试进一步。
https://github.com/neozenith/get-ca-py
最后
在pip和conda中设置配置,以便它知道该CA存储与我们的额外自签名CA一起位于何处。
pip config set global.cert %USERPROFILE%\certs\ca-bundle.crt
conda config --set ssl_verify %USERPROFILE%\certs\ca-bundle.crt
要么
pip config set global.cert $HOME/certs/ca-bundle.crt
conda config --set ssl_verify $HOME/certs/ca-bundle.crt
然后
pip config list
conda config --show ssl_verify
pip config list -v
For variant 'global', will try loading '/Library/Application Support/pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/pip.conf'
参考文献