3

我希望 imaplib 显示 IMAP 服务器证书的 md5(或 SHA)密钥,以确保没有 MITM(我不信任 CA,因此在这种情况下验证链是不够的)。

显示整个证书也可以。

我将不胜感激任何帮助!

  • 克里斯
4

2 回答 2

2

您可以使用M2Crypto 包从 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来获取更多信息。

于 2011-04-19T20:37:50.023 回答
0

我不知道如何从 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 对象

于 2011-04-19T20:34:49.813 回答