如何创建HTTPS tornado服务器

63e*_*3ek 23 python ssl https tornado python-3.x

请帮我创建HTTPS tornado服务器我当前的代码Python3不起作用

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()
Run Code Online (Sandbox Code Playgroud)

HTTPS对我来说非常重要,请帮忙

fal*_*tru 43

无需使用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()
Run Code Online (Sandbox Code Playgroud)

  • Tornado 2.x及更高版本在Application中为您提供了一个方便的方法来创建HTTPServer实例,所以你可以说application.listen(443,ssl_options = etc).您甚至可以通过在启动IOLoop之前将*两个*调用到application.listen来让*same*应用程序在*两个*端口(80*和*443)上进行监听,尽管如果您希望能够采取不同的行动,具体取决于请求进入哪个端口然后您需要为每个端口使用不同的应用程序. (6认同)