Python Twisted : SSL routines , ssl3_get_server_certificate 错误

标签 python ssl twisted

我正在使用来自 http://twistedmatrix.com/documents/current/core/howto/ssl.htmlcheck_server_certificate.py 代码示例 为了从公共(public)服务器获取证书。

from __future__ import print_function
import sys
from twisted.internet import defer, endpoints, protocol, ssl, task, error

def main(reactor, host, port=443):
    options = ssl.optionsForClientTLS(hostname=host.decode('utf-8'))
    port = int(port)

    class ShowCertificate(protocol.Protocol):
        def connectionMade(self):
            self.transport.write(b"GET / HTTP/1.0\r\n\r\n")
            self.done = defer.Deferred()
        def dataReceived(self, data):
            certificate = ssl.Certificate(self.transport.getPeerCertificate())
            print("OK:", certificate)
            self.transport.abortConnection()
        def connectionLost(self, reason):
            print("Lost.")
            if not reason.check(error.ConnectionClosed):
                print("BAD:", reason.value)
            self.done.callback(None)

    return endpoints.connectProtocol(
        endpoints.SSL4ClientEndpoint(reactor, host, port, options),
        ShowCertificate()
    ).addCallback(lambda protocol: protocol.done)

task.react(main, sys.argv[1:])

已经从 PyPI 安装了必要的“service_identity”和“idna”包,但仍然出现此错误:

$ python check_server_certificate.py www.twistedmatrix.com
Lost.
BAD: [('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')]

有什么想法吗?

最佳答案

SSL_CERT_FILE = "$(python -m certifi)" 
python check_server_certificate.py www.twistedmatrix.com

尝试使用它,它对我有用。

关于Python Twisted : SSL routines , ssl3_get_server_certificate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794102/

相关文章:

python - pylint 如何记住之前运行的分数?

python - 在使用 Keras LSTM 拟合和预测数据期间,如何使用不同大小的训练数据和测试数据以及不同的 batch_sizes?

ssl - 从证书签名请求中恢复私钥

python - 扭曲 - Python3 类型错误 : __init__() missing 1 required positional argument: 'factory'

python - Python3 上的 Twistd 可执行文件

python - 正则表达式从字符串中删除 'by'

python - 从 PyQt 事件循环中执行 Python 代码

Python-ldap set_option 不适用于优胜美地

ssl - 在服务器和客户端中安装 .crt 证书文件是否足以进行身份​​验证?

redis - 仅当我使用异步数据库操作时,Twisted 才不会发回数据