tornado中怎么实现https访问功能

tornado中怎么实现https访问功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有施甸免费网站建设让你可以放心的选择与我们合作。

首先,我们需要的当然就是 Tornado、Python、OpenSSL, 这里只是记录建立 ssl ,需要其他 linux 下知识的暂时不讲,需要的话以后另开主题。

其实 Tornado 本身已经支持了 SSL ,所以我们这里主要的只是生成可用的证书。

 

到 OpenSSL 的安装目录的 bin 文件夹下,参考 openssl.cfg/openssl.cnf 文件可以按自己的需要设置证书要用的目录啥的,这里我们使用默认,

首先在OpenSSL下建立一个 demoCA 目录,然后在 demoCA 目录下建立 :certs、newcerts 文件夹,然后在demoCA目录下建立空白的 index.txt。

然后建立一个  serial 文件,然后用 vim 或其他工具往里面填充任意的16进制数字,如 0000

然后就可以开始创建证书了,这里我参考了另外一位兄弟写的:

1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),

以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.

3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
   1)在bin目录下新建目录 demoCA、demoCA/certs、demoCA/certs  、 demoCA/newcerts
   2) 在demoCA建立一个空文件 index.txt
   3) 在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 0000 
    
   4) openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

ok,到了这里应该已经创建了可以使用的证书了,如果在为文件签名的时候有错误,那多半是信息不正确,这时可以去清空一下 index.txt 里的信息,

然后重新执行第5步里失败的操作。 

接着可以测试一下 tornado 使用 ssl 的证书了。

写个测试项目,其实也就一个py文件,像:

tornado中怎么实现https访问功能

tornado中怎么实现https访问功能代码

import os
import ssl
from tornado.httpserver import HTTPServer
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop

class TestHandler(RequestHandler):
    def get(self):
        self.write("Hello, World!\n")

settings = {
    "static_path" : os.path.join(os.path.dirname(__file__), "static"),
}

application = Application([
    (r"/", TestHandler),
], **settings)

if __name__ == "__main__":
    server = HTTPServer(application,ssl_options={
           "certfile": os.path.join(os.path.abspath("."), "server.crt"),
           "keyfile": os.path.join(os.path.abspath("."), "server.key"),
       })
    server.listen(8000)
    IOLoop.instance().start()

 然后把相关的证书扔到 py 文件的目录下。改成相应的名字。

然后开启服务,

python test.py

 接着用浏览器或curl啥的尝试访问一下,我这里就用curl了...

curl https://localhost:8000 #我这里用的默认端口是 8000

关于tornado中怎么实现https访问功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。

文章题目:tornado中怎么实现https访问功能
网页链接:https://www.cdcxhl.com/article48/ghidhp.html

成都网站建设公司_创新互联,为您提供面包屑导航品牌网站设计静态网站网站内链网站排名自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司