蟒蛇一些分布SSL证书验证失败命令
问题描述:
我试图通过twine upload <file>
上传一个Python文件的PyPI但我得到的SSL错误:蟒蛇一些分布SSL证书验证失败命令
C:\pypubsub>twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl
Uploading distributions to https://upload.pypi.org/legacy/
Uploading PyPubSub-4.0.0rc1-py3-none-any.whl
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
其他Python脚本,例如
- 与
python setup.py bdist_wheel upload <my_package>
- 与
pip install <any_package>
;但我可以添加--trusted-host pypi.python.org
任何pip install
命令和相关的安装和下载会成功
这发生在我的笔记本电脑的企业无论在家庭或工作,但它并不在我的个人笔记本电脑发生。
要解决这个问题,我基本上是试图SO answer to similar problem(即导出证书麻线正试图验证 - 大概是pypi.python.org的 - 然后告诉麻线使用它):
-
从Chrome浏览器
- ,我去https://pypi.pythong.org,点击URL旁边的锁,然后点击Details,View Certificate,Details,Copy to File。这生成了一个.CER文件。
- 我用SSL Converter将.CER文件从DER格式转换为PEM格式。这创建了一个.CRT文件。
- 我跑线为
twine upload <my_package> --cert <path to CRT file>
;这次SSL错误是SSLError: [SSL] PEM lib (_ssl.c:2846)
。
我然后试图通过如Opting Out描述修补c:\Python35\lib\ssl.py
停用服务器证书验证的:我通过_create_default_https_context = _create_unverified_context
取代线_create_default_https_context = create_default_context
。重新运行twine
命令再次失败,原因是CERTIFICATE_VERIFY_FAILED错误。
我并不是那么熟悉证书,所以我现在处于亏损状态,还有什么可以尝试。
答
您可以通过一个--cert
标志告诉twine
使用哪个证书。
twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl --cert <path-to-.pem-file>
隐蔽一个.cer
到.pem
文件,做到以下几点。
openssl x509 -inform der -in certificate.cer -out certificate.pem
的--cert
标志是一个谁使用自定义SSL证书是必不可少的。如果您使用的是公司网络,上述修补程序应该将您排除在外。询问您的管理员的SSL证书:)
Thx @karanja for answer。但似乎这证实我的文章的步骤1到3应该工作,但也许我没有正确地做第2步? – Schollii
@Schollii是否支持企业防火墙?如果是这样,你有权访问https SSL证书吗? 您需要将'.cer'文件转换为'.pem'文件。 –
所以我需要从我们的IT获得https SSL证书?所以这是一套ssl证书,不仅仅是那个我遇到麻烦的网站? – Schollii