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_cert を False に設定することを推奨しているだけです (これは既に行っています)。しかし、tornado の httpclient (validate_cert=False) で同等と思われることを実行しようとすると、依然として奇妙なエラーが発生します。壊れるコードのテスト片を次に示します。
import tornado.httpclient
request = tornado.httpclient.HTTPRequest(
url="https://myhostname.com:9001",
method="GET",
validate_cert=False
)
print tornado.httpclient.HTTPClient().fetch(request)
結果は次のとおりです。
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
残念ながら、私のエンドポイントは公開されていないため、このエラーを生成するために使用している正確なコードを提供することはできません.
誰かがこのエラーを見たことがありますか、または解決策がありますか?
ありがとう