2013-02-26 1 views
2

Я хочу использовать «tornado.httpclient.AsyncHTTPClient», чтобы отправить запрос «POST» на сайт «https», но получить:Использование «tornado.httpclient» получает «POST https» сайт получить «HTTPError: HTTP 599»

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() 
+0

Ваша версия python '> 2.6'? Если нет - попробуйте 'client.configure (" tornado.curl_httpclient.CurlAsyncHTTPClient ")' перед извлечением. –

+0

добавлено, но нет diff – sunnyxx

+0

Затем попробуйте 'client = tornado.httpclient.AsyncHTTPClient (disable_ssl_certificate_validation = True)' .. –

ответ

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

добавить «validate_cert = False ", когда gen HTTP-запрос
и кажется, нет необходимости использовать curl_httpclient:

#tornado.httpclient.AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient") 
+2

Обратите внимание, что если вы игнорируете действительность сертификата SSL, нет смысла использовать HTTPS вместо HTTP (без дополнительной безопасности), поэтому правильным решением будет устранение проблемы с сертификатом. Разумеется, YMMV. – johndodo

+2

Хотя сертификат может быть недействительным, но сообщение все равно будет происходить по зашифрованному ssl-каналу. – tigeronk2

1

Вы также можете обновить сертификаты CA файл, используемый SimpleAsyncHTTPClient. Он должен быть расположен в

site-packages/tornado/ca-certificates.crt

В моем случае копирования файла /etc/ssl/certs/ca-certificates.crt торнадо месте решить эту проблему.

Примечание: это поможет в случае, если у вас есть действующий сертификат, но ваш центр сертификации не признан торнадо.

Смежные вопросы