【问题标题】:Python imaplib display certificate keyPython imaplib 显示证书密钥
【发布时间】:2011-08-08 21:30:55
【问题描述】:

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

显示整个证书也可以。

如果有任何帮助,我将不胜感激!

  • 克里斯

【问题讨论】:

    标签: python security ssl certificate imaplib


    【解决方案1】:

    我不知道如何从 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()   
    

    请注意,certX509 object

    【讨论】:

    • 谢谢。我将使用 samplebias 解决方案,因为他直接从同一个连接中获取证书。不过再次感谢。
    【解决方案2】:

    您可以使用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 的其他属性获取更多信息。

    【讨论】:

    • 这正是我想要的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2012-03-31
    相关资源
    最近更新 更多