【问题标题】:Where does twine look for certificates?twine 在哪里寻找证书?
【发布时间】:2019-05-02 00:13:35
【问题描述】:

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

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

但是,我希望能够上传而无需明确指定 CA 证书位置。我相信我已将 CA 证书安装在系统的正确位置(使用 How to add Certificate Authority in centos7? 作为指导,并使用 wget 进行验证),但我仍然需要调用原始路径。

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

【问题讨论】:

  • 也许在环境变量上定义它?来自帮助:--cert path Path to alternate CA bundle (can also be set via TWINE_CERT environment variable).

标签: python centos7 twine pypiserver


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    与 SSL 不同。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2011-08-01
      • 2015-07-28
      • 2018-06-24
      相关资源
      最近更新 更多