首页 > 解决方案 > Python3 SMTP SSL 证书更新 - SSL:CERTIFICATE_VERIFY_FAILED 无法获取本地颁发者证书(_ssl.c:1108)

问题描述

我发布此消息是因为我使用相同的错误代码解决了问题。它可能会帮助遇到类似问题的其他人。

我曾经运行 py 脚本来发送电子邮件。另一方面,邮件服务器证书被更新,突然我的脚本无法连接到服务器。

    bash # python3 email_send.py
    Traceback (most recent call last):
      File "emailsend.py", line 143, in <module>
        server.starttls(context=context)
       File "/usr/lib/python3.8/smtplib.py", line 774, in starttls
        self.sock = context.wrap_socket(self.sock,
      File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
        return self.sslsocket_class._create(
      File "/usr/lib/python3.8/ssl.py", line 1040, in _create
        self.do_handshake()
      File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
        self._sslobj.do_handshake()
    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1108)

我通过添加最后两行解决了这个问题。

   context = ssl.create_default_context()
   context.check_hostname = False
   context.verify_mode = ssl.CERT_NONE

标签: python-3.xemailssl-certificatesmtplibrenewal

解决方案


推荐阅读