Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建HTTPS tornado服务器_Python_Python 3.x_Ssl_Https_Tornado - Fatal编程技术网

Python 如何创建HTTPS tornado服务器

Python 如何创建HTTPS tornado服务器,python,python-3.x,ssl,https,tornado,Python,Python 3.x,Ssl,Https,Tornado,请帮助我创建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"

请帮助我创建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()

HTTPS对我来说非常重要,请帮助无需使用
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()

@63ek,你有没有检查你的证书文件是否正确?我自己测试了代码,但是扩展名为
.pem
的certfile.Tornado 2.x和更高版本在应用程序中提供了一种方便的方法来为您创建HTTPServer实例,所以您可以只说Application.listen(443,ssl_options=etc)。您甚至可以在两个端口(80和443)上监听同一个应用程序,只需在启动IOLoop之前对application.listen进行两次调用即可。不过,如果您希望能够根据请求传入的端口采取不同的操作,那么您需要为每个端口使用不同的应用程序。@SilasS.Brown,谢谢你提供的信息。把答案分开贴出来怎么样?此处的注释仅通知我(除非您明确提及OP的用户名,否则不会通知OP)。发布答案会让更多的人受益。谢谢,这个问题是4年前提出来的,所以我希望OP从那时起会继续前进;我只是想添加一条注释,以防其他人通过搜索找到此内容,而我的评论只是对您的答案的一个小改动,因此我认为不值得创建一个“竞争性”答案,人们只需查看您的答案即可comment@RaviAnand这对我来说很有用。若它对你们不起作用,也许可以发布一个新的问题“为什么这个代码不起作用”类型,并展示你们的代码?