Python OpenSSL:openssl s_client -connect

Sta*_*hil 5 python ssl openssl pyopenssl

sudo openssl s_client -connect在 python open ssl 中的等价物是什么?

我查看了文档,但还没有找到任何有用的东西。我想将结果与验证者库进行比较,因为我不认为验证者库实际上是准确的。我只想得到以下内容:

---
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES128-SHA
    Session-ID: CEB4CF30EA4F1074039F5596CDDCA1073D683FFAC6D1DA1F68FCBA0FDDADDD38
    Session-ID-ctx:
    Master-Key: F5929F0740A855C32F6755ED45710D467314AF16BE52962FC8664A6E5105A6004DEC9E64B92DFEFAC6FE80FDDE65C814
    Key-Arg   : None
    Start Time: 1490843868
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
Run Code Online (Sandbox Code Playgroud)

我会在命令行调用中得到。

基本上,我想要一个相当于以下内容:

cert = CertInfo(host=hostname, port=443)  # ('RC4-SHA', 'TLSv1/SSLv3', 128)
info = cert.cipher()
Run Code Online (Sandbox Code Playgroud)

除了域之外,我不知道有关主机的任何信息,因此我试图弄清楚如何进行裸连接。这显然是不正确的,因为它错误:

context = ssl.create_default_context()

conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=hostname)
conn.connect(('google.com', 443))

cert = conn.getpeercert()
Run Code Online (Sandbox Code Playgroud)