2013-08-19 11 views
14

Please help me per creare HTTPS ciclone server di mio codice attuale python3 non funzionaCome creare server HTTPS tornado

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 è molto importante per me, per favore aiutatemi

risposta

31

Non c'è bisogno di usare TCPServer.

Prova seguente:

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, avete controllato il vostro certfile è corretta? Ho provato il codice da solo, ma certfile con l'estensione '.pem'. – falsetru

+0

Grazie mille – 63ek

+2

Tornado 2.xe versioni successive fornisce un metodo pratico in Application per creare l'istanza HTTPServer per te, quindi puoi semplicemente dire application.listen (443, ssl_options = etc). Si può anche avere * l'* applicazione * in ascolto su * entrambe le porte * (80 * e * 443) semplicemente inserendo * due * chiamate su application.listen prima di avviare IOLoop, anche se si vuole essere in grado di agire diversamente a seconda su quale porta è arrivata una richiesta, avrai bisogno di un'applicazione diversa per ogni porta. –