Python imaplib 显示证书密钥

3 投票
2 回答
574 浏览
提问于 2025-04-16 16:03

我想让imaplib显示IMAP服务器证书的md5(或者SHA)密钥,这样我就能确保没有中间人攻击(我不信任证书颁发机构,所以在这种情况下,仅仅验证证书链是不够的)。

显示整个证书也可以。

我会很感激任何帮助!!

  • Chris

2 个回答

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对象

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上的其他属性来获取更多信息。

撰写回答