tornado SSL 證書獲取與服務器配置

轉載註明出處: http://www.cnblogs.com/ityoung/p/8296088.html
自動化測試/持續集成/測試開發 QQ交流羣: 70160503html

服務端生成證書

進入 openssl 目錄

$ cd /usr/lib/sslpython

生成私鑰

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

生成 CSR 文件

$ 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

生成 CA (用於自簽名)

  • 新建demoCA, demoCA/certs, demoCA/newcerts

$ sudo mkdir demoCA demoCA/certs demoCA/newcertstornado

  • 在 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

轉載註明出處: http://www.cnblogs.com/ityoung/p/8296088.html


tornado 啓動時加上 SSL 選項

  • 複製證書文件到 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()
  • 因爲端口號小於1000, 所以須要使用 su 權限的用戶運行腳本

$ sudo python test.py


客戶端訪問

瀏覽器

輸入https://localhost直接訪問

CURL

添加 -k 選項忽略 SSL 驗證, 以下:

curl -k https://localhost

requests

添加verify=False選項, 以下:

requests.get(URL, verify=False)

轉載註明出處: http://www.cnblogs.com/ityoung/p/8296088.html


參考

[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

轉載註明出處: http://www.cnblogs.com/ityoung/p/8296088.html

相關文章
相關標籤/搜索