【发布时间】:2011-08-08 21:30:55
【问题描述】:
我希望 imaplib 显示 IMAP 服务器证书的 md5(或 SHA)密钥,以确保没有 MITM(我不信任 CA,因此在这种情况下验证链是不够的)。
显示整个证书也可以。
如果有任何帮助,我将不胜感激!
- 克里斯
【问题讨论】:
标签: python security ssl certificate imaplib
我希望 imaplib 显示 IMAP 服务器证书的 md5(或 SHA)密钥,以确保没有 MITM(我不信任 CA,因此在这种情况下验证链是不够的)。
显示整个证书也可以。
如果有任何帮助,我将不胜感激!
【问题讨论】:
标签: python security ssl certificate imaplib
我不知道如何从 imaplib 执行此操作,但您可以连接到安全的 IMAP 服务器并使用 M2Crypto 显示证书:
from M2Crypto import SSL
ctx = SSL.Context('sslv3')
c = SSL.Connection(ctx)
c.connect(('localhost', 993)) # automatically checks cert matches host
cert = c.get_peer_cert()
print cert.as_pem()
print cert.as_text()
请注意,cert 是 X509 object。
【讨论】:
您可以使用M2Crypto package 解析来自 IMAP 连接的 SSL 套接字的完整 SSL 证书。这是一个例子:
import imaplib
from M2Crypto import X509
cn = imaplib.IMAP4_SSL('imap.gmail.com', 993)
sock = cn.ssl()
data = sock.getpeercert(1)
cert = X509.load_cert_string(data, X509.FORMAT_DER)
print cert.get_fingerprint()
打印:
2029AF27C0A55390D670C0BD7AB9747
使用cert 的其他属性获取更多信息。
【讨论】: