【发布时间】:2020-10-15 03:00:07
【问题描述】:
使用 Python 3,我尝试使用 SSL 上下文连接到远程 SMTP 主机,但出现以下错误:
[SSL: DH_KEY_TOO_SMALL] dh 密钥太小 (_ssl.c:1056)
这是我使用的代码:
from smtplib import SMTP
import ssl, os, certifi
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH, cafile=certifi.where())
ssl_context.options |= ssl.OP_NO_TLSv1
ssl_context.options |= ssl.OP_NO_TLSv1_1
ssl_context.load_cert_chain(os.path.join(certsdir, 'certificate.pem'), os.path.join(certsdir, 'id_rsa'))
ssl_context.load_dh_params(os.path.join(certsdir, 'dhparams.pem'))
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
smtp = SMTP(server_name)
smtp.connect((host, 25))
smtp.ehlo()
if smtp.has_extn('starttls'):
smtp.starttls(None, None, ssl_context)
smtp.ehlo()
smtp.mail(fromaddr)
smtp.rcpt(toaddr)
smtp.data(message)
smtp.quit()
问题:问题是在我端还是在目标服务器端?有什么办法可以避免这个问题吗?
我使用certifi 作为证书列表,它基于 Mozilla 的建议并且是最新的。
在这里感谢您的帮助。
【问题讨论】:
标签: python-3.x ssl