Tornado使用SSL自签名证书

最近需要使用tornado做一个简单的服务器, 但客户端需要https, 所以研究了一下SSL证书. 下面以简单的步骤说明

第一步, 生成证书

set %DOMAIN%=www.abc.com
set SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=%DOMAIN%"
#注意: CN就是你的域名
openssl genrsa -des3 -out %DOMAIN%.key 1024
openssl req -new -subj %SUBJECT% -key %DOMAIN%.key -out %DOMAIN%.csr
openssl rsa -in %DOMAIN%.origin.key -out %DOMAIN%.key
openssl x509 -req -days 3650 -in %DOMAIN%.csr -signkey %DOMAIN%.key -out %DOMAIN%.crt
openssl pkcs12 -export -out %DOMAIN%.p12 -inkey %DOMAIN%.key -in %DOMAIN%.crt -certfile %DOMAIN%.crt
openssl pkcs12 -export -out %DOMAIN%.p12 -inkey %DOMAIN%.origin.key -in %DOMAIN%.crt -certfile %DOMAIN%.crt
#这里会生成 jks,key,csr, crt, p12文件.

第二步, 配置tornado

    ssl_options = {
        'certfile': os.path.join(os.path.abspath("."), 'bin/www.abc.com.crt'),
        'keyfile': os.path.join(os.path.abspath("."), 'bin/www.abc.com.key'),
    }
    app = tornado.web.Application([
        (r"/?", IndexController),
    ], debug=True, cookie_secret=")
    server = tornado.httpserver.HTTPServer(app, ssl_options=ssl_options)
    server.listen(443)
    tornado.ioloop.IOLoop.current().start()

第三步, 测试

https://www.abc.com

Leave a Reply