4

我有一个使用 https 设置的个人 Python 存储库,我可以使用以下命令上传到它:

twine upload <dist> -r <my_server> --cert <path/to/certfile>

但是,我希望能够上传而不必明确指定 CA 证书位置。我相信我已经在我的系统的正确位置安装了 CA 证书(使用 如何在 centos7 中添加证书颁发机构?作为指导,并使用 wget 进行验证),但我仍然需要调用原始路径。

如何让 twine 默认使用我的备用 CA 证书?

4

2 回答 2

4

Twine 依赖于 Requests,而后者又依赖于 Certifi(https://certifi.io/,实际上是从 Requests 中提取的),Certifi 只查看它自己的“精心策划的根证书集合”,由默认:

>>> import certifi

>>> certifi.where()
'/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'

这与 SSL 不同。

您可以将环境变量TWINE_CERTREQUESTS_CA_BUNDLE环境变量设置为 CA 证书的路径,前者只会影响 Twine,后者会影响任何依赖请求的东西。

于 2019-10-10T08:25:23.543 回答
1

运行以下命令来确定 Python 在哪里寻找您的 CA 证书:

>>> import ssl
>>> ssl.get_default_verify_paths().capath
/usr/local/etc/openssl/certs

然后将您的自定义证书放在该目录中。

于 2018-12-05T18:14:12.263 回答