imaplib python与ssl证书

时间:2014-02-03 01:50:12

标签: python ssl openssl ssl-certificate imaplib

我正在尝试使用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

文件的权限没问题。 如果我使用密钥文件选项,他们会问我证书,然后获得相同的错误。 我找不到具有证书规范的此函数的示例。 谢谢。

1 个答案:

答案 0 :(得分:2)

虽然从文档中不明显我会建议参数certfile和keyfile不用于验证服务器证书(这是你如何使用它 - 而密钥文件在这里没有任何意义)但是是可选的证书客户端及其私钥,某些服务器可能需要这些私钥来识别客户端(例如,代替密码或密码)。

要验证服务器,您通常会使用名为CA文件或CA路径(CA =证书代理机构)的内容,并且此处不需要私钥。在这里给出CA证书似乎没有明显的方法,但Certificate Authority for imaplib and poplib python可能对此有所帮助。