【问题标题】:Trying to extract Certificate information in Python尝试在 Python 中提取证书信息
【发布时间】:2019-08-09 14:23:00
【问题描述】:

我对 python 很陌生,似乎无法弄清楚如何完成这项任务。我想连接到一个网站并提取证书信息,例如颁发者和到期日期。

我已经看遍了,尝试了各种步骤,但因为我是新手,所以我迷失在套接字、包装器等中。

更糟糕的是,我处于代理环境中,这似乎使事情变得非常复杂。

有谁知道我如何在代理后面连接和提取信息?

【问题讨论】:

    标签: python ssl python-requests pyopenssl m2crypto


    【解决方案1】:

    正如this 中解释的那样回答:

    您仍然可以将服务器证书与 ssl.get_server_certificate() 函数,但它在 PEM 中返回它 格式。

    导入ssl
    print ssl.get_server_certificate(('server.test.com', 443))

    从这里开始,我将使用 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'

    【讨论】:

    • 好的,如果我尝试`ssl.get_server_certificate(('www.google.com', 443))`我得到一个超时错误`TimeoutError:[WinError 10060]连接尝试失败,因为连接一方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立连接失败`我认为是因为我的代理但我不知道如何解决它。
    • 我已经让 ssl.get_server_certificate 工作了,但它现在告诉我我有一个值错误ValueError: too many values to unpack (expected 2)
    • 到目前为止它对我有用。 (python 2.7.15)也许这可能会有所帮助。 ValueError: too many values to unpack (expected 2)
    • 您的答案是 100% 正确的,我只是在家里的 Mac 上运行它,没有任何问题。是工作中的代理代理导致了问题。
    【解决方案2】:

    Python SSL 库不处理代理。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
    猜你喜欢
    • 2015-09-25
    • 2022-10-19
    • 2014-04-21
    • 2015-08-31
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多