首页 > 解决方案 > 如何在 Python 中更新 SSL 证书?

问题描述

我正在运行 python 3.9.1 我有一些 Django Admin Actions 可以创建然后下载一些 PDF。在我的本地机器(Windows 10)上运行它时,我最近开始收到以下错误消息:SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书已过期(_ssl.c:1123)

关于如何处理这个问题的任何想法?Django 应用程序在服务器上完美运行,问题仅在我的本地主机上。

标签: pythondjangocertificatesll

解决方案


就我而言,我正在与 IoT(物联网)设备 API 进行交互,并且拥有过期的 LetsEncrypt 证书。我在以下位置下载了新的 LetsEncrypt 证书:https ://valid-isrgrootx1.letsencrypt.org/

更多解释:

我的错误发生在从 IoT Web 服务器请求 API 信息的 Windows Python 客户端上。我通过查看 Windows 中的现有证书日期确定了哪个客户端证书已过期:

  • 以管理员身份打开 Powershell,然后: Get-Childitem cert:\LocalMachine\root |format-list

过期的证书归 LetsEncrypt 所有。有关过期证书的更多信息:https ://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/ 。

就我而言,LetsEncrypt 根证书于 9 月底到期,并在未来被更新的证书所取代。要实施新证书,请访问使用来自失败客户端的该证书的任何网页。对于 LetsEncrypt,请访问他们的证书演示页面:https ://valid-isrgrootx1.letsencrypt.org/,您的证书存储将自动更新。


推荐阅读