python - imaplib python 与 ssl 证书

标签 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

文件权限正常。 如果我使用 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/

相关文章:

python - 使用python中的struct将数据转换为二进制

python - 我怎样才能得到真正的光标或更新它或重置它?

c++ - 无法实现 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 重新连接到服务器

ruby-on-rails - 获取 SSL_connect ... 使用 .p12 文件 ruby​​ 时 sslv3 警报握手失败

bash - 获取 smtp.gmail.com 的 SSL 证书指纹

encryption - 我如何使用 OpenSSL 使用我的公钥加密消息,然后使用我的私钥解密它?

python - 分隔字符串

iis - 为什么我们的后端程序员使用重定向以这种方式处理 SSL?

PHP mysqli 无法识别远程数据库的 SSL 证书

python - 查找列表中多个出现项目的索引