tornado HTTPClien的SSL错误

2024-10-01 07:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用tornado的http客户端获取URL。我以前做过很多次,但这次遇到了一个非常奇怪的SSL错误。我尝试使用的端点没有有效的证书,但是curl调用中的-k仍然证明它是有效的。在

$ curl https://myhostname.com:9001
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

$ curl https://myhostname.com:9001 -k
404 page not found

我在网上找到的所有答案都建议将validate\u cert设置为False(我已经在做了)。但是,当我尝试做我认为在tornado的httpclient(validate\u cert=False)中是等效的时,我仍然得到一个非常奇怪的错误。下面是一段代码的测试片段:

^{pr2}$

结果如下:

WARNING:tornado.general:SSL Error on 6 ('myhostname.com', 9001): [Errno 1] _ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Traceback (most recent call last):
  File "./test.py", line 17, in <module>
    make_call()
  File "/Users/kaleb.pomeroy/workspace/lefty/dashboard/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/gen.py", line 140, in wrapper
    result = func(*args, **kwargs)
  File "./test.py", line 13, in make_call
    response = tornado.httpclient.HTTPClient().fetch(request)
  File "/Users/kaleb.pomeroy/workspace/lefty/dashboard/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/httpclient.py", line 85, in fetch
    self._async_client.fetch, request, **kwargs))
  File "/Users/kaleb.pomeroy/workspace/lefty/dashboard/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/ioloop.py", line 370, in run_sync
    return future_cell[0].result()
  File "/Users/kaleb.pomeroy/workspace/lefty/dashboard/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/concurrent.py", line 65, in result
    raise self._exception
tornado.httpclient.HTTPError: HTTP 599: [Errno 1] _ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

不幸的是,我的端点不是公共的,所以我无法提供生成此错误所使用的确切代码。在

有没有人看到这个错误,或者有解决办法?在

谢谢


Tags: inpyssl错误linecurluserstornado
1条回答
网友
1楼 · 发布于 2024-10-01 07:16:48

这看起来可能与https://github.com/facebook/tornado/blob/fd4d8997a772829b8439322dbce45091bc51beaf/tornado/simple_httpclient.py#L196处的逻辑有关 已知的一个问题是,tornado.simple_httpclient无法连接到Python2.6上的某些服务器,这看起来是相同的错误消息,但我以前在Python2.7上没有见过这种故障。在

尝试将ssl_options={"ssl_version": ssl.PROTOCOL_TLSv1}传递给HTTP请求。您也可以尝试使用tornado.curl_httpclient来实现一个更可能处理不太常见的服务器配置的替代实现。在

相关问题 更多 >