我正在尝试使用imaplib.IMAP4_SSL函数,但我遇到了这个错误:
[Errno 336265225] _ssl.c:356:错误:140B0009:SSL例程:SSL_CTX_use_PrivateKey_file:PEM lib
try:
mail = imaplib.IMAP4_SSL(host='imap.gmail.com', port="993", certfile="certIMAP.pem")
except Exception as e:
print e
sys.exit()
证书已下载:
echo | openssl s_client -connect imap.gmail.com:993 2>/dev/null | openssl x509 > certIMAP.pem
文件的权限没问题。 如果我使用密钥文件选项,他们会问我证书,然后获得相同的错误。 我找不到具有证书规范的此函数的示例。 谢谢。
答案 0 :(得分:2)
虽然从文档中不明显我会建议参数certfile和keyfile不用于验证服务器证书(这是你如何使用它 - 而密钥文件在这里没有任何意义)但是是可选的证书客户端及其私钥,某些服务器可能需要这些私钥来识别客户端(例如,代替密码或密码)。
要验证服务器,您通常会使用名为CA文件或CA路径(CA =证书代理机构)的内容,并且此处不需要私钥。在这里给出CA证书似乎没有明显的方法,但Certificate Authority for imaplib and poplib python可能对此有所帮助。