您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用python检索远程主机的TLS / SSL对等证书?

如何使用python检索远程主机的TLS / SSL对等证书?

python ssl库似乎只有在具有有效签名的情况下才能为您解析证书。

    """Returns a formatted version of the data in the
    certificate provided by the other end of the SSL channel.
    Return None if no certificate was provided, {} if a
    certificate was provided, but not validated."""

您仍然可以使用该ssl.get_server_certificate()功能获取服务器证书,但是它将以PEM格式返回。(或者,您可以调用c.getpeercert(True),以二进制DER格式返回证书,而不管其是否经过验证。)

>>> print ssl.get_server_certificate(('server.test.com', 443))
-----BEGIN CERTIFICATE-----
MIID4zCCAsugAwIBA.....

从这里,我将使用M2Crypto或OpenSSL来读取证书并获取值:

    # M2Crypto
    cert = ssl.get_server_certificate(('www.google.com', 443))
    x509 = M2Crypto.X509.load_cert_string(cert)
    x509.get_subject().as_text()
    # 'C=US, ST=California, L=Mountain View, O=Google Inc, CN=www.google.com'

    # OpenSSL
    x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
    x509.get_subject().get_components()
    #[('C', 'US'),
    # ('ST', 'California'),
    # ('L', 'Mountain View'),
    # ('O', 'Google Inc'),
    # ('CN', 'www.google.com')]
python 2022/1/1 18:43:23 有281人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶