【问题标题】:Only on Local Machine: [SSL: CERTIFICATE_VERIFY_FAILED] _ssl.c:1108) Error仅在本地计算机上:[SSL: CERTIFICATE_VERIFY_FAILED] _ssl.c:1108) 错误
【发布时间】:2020-04-15 05:16:34
【问题描述】:

我可以使用 Python 很好地连接到任何外部 https 站点而不会出现此错误: SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1108)')))

但是我的笔记本电脑上有一个本地网络服务器,它带有一个自签名证书,它本身可以正常工作,但是当我尝试连接到它时,Python 会生成一个 _ssl.c:1108 错误。

有什么想法吗?

【问题讨论】:

  • 我可以使用 verify=false,但即使是本地的,它似乎也不是最好的方法
  • 如果它是自签名证书,您有两个选择,如您所述,设置 verify=false,或信任用于签署证书的证书颁发机构。
  • stackoverflow.com/questions/41691327/… solution /Applications/Python\ 3.6/Install\ Certificates.command[quote] 有效。

标签: ssl


【解决方案1】:

python 客户端无权访问和信任签署 Web 服务器证书的 CA 证书。在您的情况下,这是自签名的 Web 服务器证书。

要让 python 客户端正常工作,您可以执行以下操作:

  1. 禁用证书验证。这不是一个好主意,但我想快速测试是可以的。重点是“不推荐”。
  2. 下载自签名证书并使其可供python客户端访问,并将其指定为受信任的CA证书。
  3. 从知名 CA(例如 LetsEncrypt(免费)或商业 CA)下载并安装证书。这是推荐的方法。

您可以深入了解此处提到的项目,并从概念上了解 TLS 的运作方式。

编辑 1:您还可以从 LetsEncrypt CA 获得免费证书。或者您可以获得free test certificate from most of the commercial CAs,例如 DigiCert 等。请参阅此link,获取和安装由 DigiCert 测试 CA 签名的免费测试证书。

有关 TLS 的 python 客户端配置的详细信息,请参阅this

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2020-04-06
    • 2020-03-04
    相关资源
    最近更新 更多