4

我想使用“tornado.httpclient.AsyncHTTPClient”向“https”网站发送“POST”请求,但得到:

HTTPError: HTTP 599: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed  

当我使用“urllib”代替(具有相同的 url 和参数,我不知道的标头)
代码时,它可以工作,如下所示:

url = r'https://**********.com/****/'
request = tornado.httpclient.HTTPRequest(url = url, method = 'POST', body = body, headers = headers)
client = tornado.httpclient.AsyncHTTPClient()
client.fetch(request, callback = on_reqeust)
tornado.ioloop.IOLoop.instance().start()
4

2 回答 2

3
request = tornado.httpclient.HTTPRequest(url=url, method='POST', body=body,
                                         validate_cert=False)

在生成 http 请求时添加“validate_cert=False”
,似乎不需要使用 curl_httpclient:

#tornado.httpclient.AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
于 2013-02-28T06:18:10.427 回答
1

您还可以更新 SimpleAsyncHTTPClient 使用的 CA 证书文件。它应该位于

site-packages/tornado/ca-certificates.crt

在我的情况下,将文件复制/etc/ssl/certs/ca-certificates.crt到龙卷风位置解决了这个问题。

注意:如果您有有效的证书但您的证书颁发机构不被龙卷风识别,这将有所帮助。

于 2014-06-26T16:36:06.017 回答