轉載註明出處: 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