转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html
自动化测试/持续集成/测试开发 QQ交流群: 70160503html
$ cd /usr/lib/ssl
python
$ sudo openssl genrsa -des3 -out server.key 1024
web
$ sudo openssl req -new -key server.key -out server.csr -config openssl.cnf
浏览器
其中必填项有: 服务器
* Country Name (2 letter code) [AU]:app
* Common Name (e.g. server FQDN or YOUR name) []:curl
$ sudo mkdir demoCA demoCA/certs demoCA/newcerts
tornado
在 demoCAm 目录下新建空文件 index.txtoop
在 demoCAm 目录下新建文件 serial, 内容是一个合法的 16 进制数字, 例如 0000测试
返回 /usr/lib/ssl 目录, 执行以下命令生成 CA
$ sudo openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
其中必填项有:
* Country Name (2 letter code) [AU]:
* Common Name (e.g. server FQDN or YOUR name) []:
$ sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
复制证书文件到 tornado server 目录下(可选)
修改测试服务器代码 test.py
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
直接访问
添加 -k
选项忽略 SSL 验证, 以下:
curl -k https://localhost
添加verify=False
选项, 以下:
requests.get(URL, verify=False)
[1] 使用Tornado搭建HTTPS网站, yeolar, http://www.yeolar.com/note/2015/04/30/tornado-ssl-https/
[2] curl - 为何不能识别自签名的SSL证书?, https://code.i-harness.com/zh-CN/q/10c8411