2013-08-19 44 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是正確的嗎?我自己測試了代碼,但使用'.pem'擴展名的certfile。 – falsetru

+0

謝謝你很多 – 63ek

+2

Tornado 2.x及更高版本爲應用程序提供了一種方便的方法來爲你創建HTTPServer實例,所以你可以只說application.listen(443,ssl_options = etc)。在啓動IOLoop之前,您甚至可以在*端口(80 *和* 443)* * * * * * * * * * * * *上調用application.listen,但是如果您希望能夠根據哪個端口發出請求,那麼您將需要爲每個端口提供不同的應用程序。 –