如何将自定义CA根证书添加到Windows中的pip使用的CA Store?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将自定义CA根证书添加到Windows中的pip使用的CA Store?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3535字,纯文字阅读大概需要6分钟。
内容图文
![如何将自定义CA根证书添加到Windows中的pip使用的CA Store?](/upload/InfoBanner/zyjiaocheng/952/77384c8c505b4145886fa8d2cbeb6723.jpg)
我刚刚从python.org安装了Python3,并且无法使用pip安装软件包.根据设计,网络上有一个中间人的数据包检测设备,它通过使用自己的证书重新签名所有ssl连接来检查所有数据包(包括ssl).部分GPO将自定义根证书推送到Windows密钥库.
使用Java时,如果我需要访问任何外部https站点,我需要手动更新JVM中的cacerts以信任自签名CA证书.
我如何为python实现这一目标?现在,当我尝试使用pip安装软件包时,可以理解,我得到了很好的[SSL:CERTIFICATE_VERIFY_FAILED]错误.
我意识到我可以使用–trusted-host参数忽略它们,但我不想为我正在尝试安装的每个包执行此操作.
有没有办法更新python使用的CA证书存储?
解决方法:
自签证书颁发机构pip / conda
在用Git(How can I make git accept a self signed certificate?)广泛记录类似问题之后,我们再次在公司防火墙后面用代理给我们一个我们应该信任的MitM“攻击”,并且:
NEVER disable all SSL verification!
This creates a bad security culture. Don’t be that person.
TL;博士
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
# Bonus while we are here...
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----
获得我们的自签证书
以下是有关如何获取自签名证书的一些选项:
>通过OpenSSL CLI
>通过浏览器
>通过Python脚本
通过OpenSSL CLI获取我们的自签名证书
echo quit | openssl s_client -showcerts -servername "curl.haxx.se" -connect curl.haxx.se:443 > cacert.pem
通过浏览器获取我们的自签名证书颁发机构
>获取CA:https://stackoverflow.com/a/50486128/622276
> http://blog.majcica.com/2016/12/27/installing-self-signed-certificates-into-git-cert-store/
感谢这个答案和链接的博客,它显示了如何查看证书然后使用base64 PEM编码选项复制到文件的步骤(在Windows上).
复制此导出文件的内容并将其粘贴到cacerts.pem文件的末尾.
为了保持一致性,请将此文件重命名为cacerts.pem – > ca-bundle.crt并将它放在容易的地方:
# Windows
%USERPROFILE%\certs\ca-bundle.crt
# or *nix
$HOME/certs/cabundle.crt
通过Python获取我们的自签名证书颁发机构
感谢所有出色的答案:
How to get response SSL certificate from requests in python?
我把以下内容放在一起,试图更进一步.
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
参考
>点子SSL:https://pip.pypa.io/en/stable/user_guide/#configuration
> Conda SSL:https://stackoverflow.com/a/35804869/622276
>获取CA:https://stackoverflow.com/a/50486128/622276
> http://blog.majcica.com/2016/12/27/installing-self-signed-certificates-into-git-cert-store/
>使用Python自动获取对等CA:How to get response SSL certificate from requests in python?
内容总结
以上是互联网集市为您收集整理的如何将自定义CA根证书添加到Windows中的pip使用的CA Store?全部内容,希望文章能够帮你解决如何将自定义CA根证书添加到Windows中的pip使用的CA Store?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。