2013-08-19 6 views
14

Пожалуйста, помогите мне создать HTTPS смерч сервер Мой текущий код Python3 не работаетКак создать сервер HTTPS смерч

import os, socket, ssl, pprint, tornado.ioloop, tornado.web, tornado.httpserver 
from tornado.tcpserver import TCPServer 

class getToken(tornado.web.RequestHandler): 
    def get(self): 
     self.write("hello") 

application = tornado.web.Application([ 
    (r'/', getToken), 
]) 

# implementation for SSL 
http_server = tornado.httpserver.HTTPServer(application) 

TCPServer(ssl_options={ 
    "certfile": os.path.join("/var/pyTest/keys/", "ca.csr"), 
    "keyfile": os.path.join("/var/pyTest/keys/", "ca.key"), 
}) 

if __name__ == '__main__': 
    #http_server.listen(8888) 
    http_server = TCPServer() 
    http_server.listen(443) 
    tornado.ioloop.IOLoop.instance().start() 

HTTPS очень важно для меня, пожалуйста, помогите

ответ

31

Нет необходимости использовать TCPServer.

Попробуйте следующее:

import tornado.httpserver 
import tornado.ioloop 
import tornado.web 

class getToken(tornado.web.RequestHandler): 
    def get(self): 
     self.write("hello") 

application = tornado.web.Application([ 
    (r'/', getToken), 
]) 

if __name__ == '__main__': 
    http_server = tornado.httpserver.HTTPServer(application, ssl_options={ 
     "certfile": "/var/pyTest/keys/ca.csr", 
     "keyfile": "/var/pyTest/keys/ca.key", 
    }) 
    http_server.listen(443) 
    tornado.ioloop.IOLoop.instance().start() 
+0

@ 63ek, Вы проверили свой CERTFILE правильно? Я сам тестировал код, но certfile с расширением '.pem'. – falsetru

+0

Большое спасибо – 63ek

+2

Tornado 2.x и up предоставляет удобный метод в приложении для создания экземпляра HTTPServer для вас, поэтому вы можете просто сказать application.listen (443, ssl_options = и т. Д.). Вы даже можете * * приложение * прослушивать * оба * порта (80 * и * 443) просто путем добавления * двух * вызовов в application.listen перед запуском IOLoop, хотя, если вы хотите иметь возможность действовать по-разному в зависимости от в который был отправлен запрос, вам понадобится другое приложение для каждого порта. –