Итак, у меня есть «клиент», который использует библиотеку запросов python для выполнения запросов http / https со следующим кодом:
proxies = {
'http' : 'http://user:1@localhost:8888',
'https': 'http://user:1@localhost:8888'
}
r = requests.request('GET', 'https://www.instagram.com/', proxies = proxies)
Затем этот запрос перенаправляется на сервер торнадо.Вот как я инициализирую сервер торнадо после использования openssl для генерации сертификата:
def make_app():
return tornado.web.Application(urls)
if __name__ == "__main__":
app = make_app()
http_server = tornado.httpserver.HTTPServer(app
, ssl_options={"certfile": "ssl/cert.pem","keyfile": "ssl/key.pem"
})
http_server.listen(8888)
tornado.ioloop.IOLoop.current().start()
Так вот, как работает мой вариант использования: я хочу, чтобы связь между моим клиентом и сервером торнадо была зашифрована,используя сертификат сервера.Затем на сервере торнадо я получаю необработанные данные (незашифрованные) и обрабатываю часть, в которую отправляю их, по запрошенному URL-адресу, в данном случае https://www.instagram.com/
.Затем я собираю ответ и отправляю его клиенту в зашифрованном виде.Это возможный вариант использования?Нужен ли мне дополнительный код для обработки ssl-рукопожатия между клиентом и сервером торнадо? Кажется, клиент не может подключиться к серверу торнадо, когда я представил материал ssl_options
.Без этого все работает нормально.Но я действительно хочу, чтобы эта логика использовалась.