我有一个使用 https 设置的个人 Python 存储库,我可以使用以下命令上传到它:
twine upload <dist> -r <my_server> --cert <path/to/certfile>
但是,我希望能够上传而不必明确指定 CA 证书位置。我相信我已经在我的系统的正确位置安装了 CA 证书(使用 如何在 centos7 中添加证书颁发机构?作为指导,并使用 wget 进行验证),但我仍然需要调用原始路径。
如何让 twine 默认使用我的备用 CA 证书?
我有一个使用 https 设置的个人 Python 存储库,我可以使用以下命令上传到它:
twine upload <dist> -r <my_server> --cert <path/to/certfile>
但是,我希望能够上传而不必明确指定 CA 证书位置。我相信我已经在我的系统的正确位置安装了 CA 证书(使用 如何在 centos7 中添加证书颁发机构?作为指导,并使用 wget 进行验证),但我仍然需要调用原始路径。
如何让 twine 默认使用我的备用 CA 证书?
Twine 依赖于 Requests,而后者又依赖于 Certifi(https://certifi.io/,实际上是从 Requests 中提取的),Certifi 只查看它自己的“精心策划的根证书集合”,由默认:
>>> import certifi
>>> certifi.where()
'/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
这与 SSL 不同。
您可以将环境变量TWINE_CERT
或REQUESTS_CA_BUNDLE
环境变量设置为 CA 证书的路径,前者只会影响 Twine,后者会影响任何依赖请求的东西。
运行以下命令来确定 Python 在哪里寻找您的 CA 证书:
>>> import ssl
>>> ssl.get_default_verify_paths().capath
/usr/local/etc/openssl/certs
然后将您的自定义证书放在该目录中。