测试开发实践

tornado SSL 证书获取与服务器配置

2018-01-16  本文已影响6人  严北

服务端生成证书

进入 openssl 目录

$ cd /usr/lib/ssl

生成私钥

$ sudo openssl genrsa -des3 -out server.key 1024

生成 CSR 文件

$ sudo openssl req -new -key server.key -out server.csr -config openssl.cnf

其中必填项有:

生成 CA (用于自签名)

$ sudo mkdir demoCA demoCA/certs demoCA/newcerts

$ sudo openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

其中必填项有:

签名

$ sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf


tornado 启动时加上 SSL 选项


import tornado.ioloop
import tornado.web
import os

class TestGetHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, World!")

def make_app():
    return tornado.web.Application([
        (r"/", TestGetHandler),
    ])

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

$ sudo python test.py


客户端访问

浏览器

输入https://localhost直接访问

CURL

添加 -k 选项忽略 SSL 验证, 如下:

curl -k https://localhost

requests

添加verify=False选项, 如下:

requests.get(URL, verify=False)


参考

[1] 使用Tornado搭建HTTPS网站, yeolar
[2] curl - 为什么不能识别自签名的SSL证书?

上一篇 下一篇

猜你喜欢

热点阅读