使用tornado创建本地https服务,不用openssl方案

1.安装pyopenssl

pip install pyopenssl

 2.生成自签名 SSL/TLS 证书,找个文件,写入以下内容,运行一下,会生成cert.pem的文件

from OpenSSL import crypto

# 生成私钥文件
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 2048)

# 生成证书请求文件
req = crypto.X509Req()
subj = req.get_subject()
subj.countryName = "US"
subj.stateOrProvinceName = "CA"
subj.localityName = "San Francisco"
subj.organizationName = "My Company"
subj.commonName = "www.example.com"
req.set_pubkey(key)
req.sign(key, "sha256")

# 生成自签名证书文件
cert = crypto.X509()
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(365*24*60*60)
cert.set_issuer(req.get_subject())
cert.set_subject(req.get_subject())
cert.set_pubkey(req.get_pubkey())
cert.sign(key, "sha256")

with open("cert.pem", "w") as f:
    f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode("utf-8"))
    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key).decode("utf-8"))

3.在tornado上使用

import ssl
from tornado import httpserver, ioloop, web


class MainHandler(web.RequestHandler):
    def get(self):
        self.write("Hello, world")

if __name__ == "__main__":
    app = web.Application([
        (r"/", MainHandler),
    ])

    # 启用 SSL/TLS
    ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    ssl_ctx.load_cert_chain("cert.pem")
    http_server = httpserver.HTTPServer(app, ssl_options=ssl_ctx)

    http_server.listen(8888)
    ioloop.IOLoop.current().start()

4.然后就可以启动https://localhost:8888啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值