我正在尝试使用 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
文件权限正常。 如果我使用 key 文件选项,他们会询问我证书,然后会出现相同的错误。 我找不到带有证书规范的此功能的示例。 谢谢。
最佳答案
虽然从文档中并不明显,但我建议参数 certfile 和 keyfile 不用于验证服务器证书(这就是您使用它的方式 - 并且 keyfile 在这里没有任何意义),而是可选的证书客户端及其私钥,某些服务器可能需要私钥来识别客户端(例如,代替密码或除密码之外)。
要验证服务器,您通常有一个称为 CA 文件或 CA 路径(CA = 证书机构)的东西,并且这里不需要私钥。这里似乎没有明显的方法来给出 CA 证书,但是 Certificate Authority for imaplib and poplib python可能会帮助你。
关于python - imaplib python 与 ssl 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518640/