2012-11-20 11 views
9

Ich bin ein Neuling in Tornado. Und ich mein Lernen mit „Hallo Welt“ Code wie folgt beginnen:Wie behandelt man eine Anfrage mit HTTPS-Protokoll in Tornado?

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

class HelloHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Hello, world!") 

application = tornado.web.Application([ 
    (r"/", HelloHandler) 
]) 

http_server = tornado.httpserver.HTTPServer(application) 

if __name__ == "__main__": 
    http_server.listen(80) 
    # http_server.listen(443) 
    tornado.ioloop.IOLoop.instance().start() 

Als ich eintrat ‚http: // localhost‘ an den Browser, es funktioniert und druckt

"Hello, world!" 

Aber wenn ich versuchte, die Anforderung „https: // localhost“, gibt es mit:

Error 102 (net::ERR_CONNECTION_REFUSED): The server refused the connection. 

es gibt zu wenig Dokumente über Tornado online, wer kann mir sagen, wie mit https-Protokoll Anfrage bearbeitet

+0

Haben Sie die erforderlichen Zertifikate/Schlüsseldateien usw. generiert? Es gibt viel mehr zu HTTPS als nur "S". –

+0

Zertifikate/Schlüsseldateien generieren? Ich denke, ich habe einen langen Weg zu gehen .. und ich google das Konzept zuerst. – Leonard

+0

Hallo @PaulC Vielen Dank für Ihren Vorschlag. Ich habe openssl installiert und meinen eigenen Schlüssel & crt generiert. Und auch dank demikl, nachdem ich key & crt zu den ssl_options hinzugefügt habe, funktioniert mein Hello World Programm! :) – Leonard

Antwort

15

Nach tornado.httpserver documentation, müssen Sie ssl_options Wörterbuch Argument an den Konstruktor übergeben, binden dann an dem HTTPS-Port (443):

http_server = tornado.httpserver.HTTPServer(applicaton, ssl_options={ 
    "certfile": os.path.join(data_dir, "mydomain.crt"), 
    "keyfile": os.path.join(data_dir, "mydomain.key"), 
}) 

http_server.listen(443) 

mydomain.crt das SSL-Zertifikat sein sollte, und mydomain.key Ihr privater SSL-Schlüssel.

+1

Danke! Mit @Paul C und deiner Hilfe. Mein Tornado Hallo Welt zu HTTPS funktioniert. – Leonard

+1

Beachten Sie, dass Sie problemlos eine andere Nicht-SSL-Instanz erstellen können, wenn Sie dies möchten. (Zumindest um Benutzer von HTTP zu HTTPS umzuleiten.) – tiktak

Verwandte Themen