亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

tornado中怎么實現https訪問功能

發布時間:2021-08-09 14:34:16 來源:億速云 閱讀:678 作者:Leah 欄目:大數據

tornado中怎么實現https訪問功能,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

首先,我們需要的當然就是 Tornado、Python、OpenSSL, 這里只是記錄建立 ssl ,需要其他 linux 下知識的暫時不講,需要的話以后另開主題。

其實 Tornado 本身已經支持了 SSL ,所以我們這里主要的只是生成可用的證書。

 

到 OpenSSL 的安裝目錄的 bin 文件夾下,參考 openssl.cfg/openssl.cnf 文件可以按自己的需要設置證書要用的目錄啥的,這里我們使用默認,

首先在OpenSSL下建立一個 demoCA 目錄,然后在 demoCA 目錄下建立 :certs、newcerts 文件夾,然后在demoCA目錄下建立空白的 index.txt。

然后建立一個  serial 文件,然后用 vim 或其他工具往里面填充任意的16進制數字,如 0000

然后就可以開始創建證書了,這里我參考了另外一位兄弟寫的:

1.首先要生成服務器端的私鑰(key文件):
openssl genrsa -des3 -out server.key 1024
運行時會提示輸入密碼,此密碼用于加密key文件(參數des3便是指加密算法,當然也可以選用其他你認為安全的算法.),

以后每當需讀取此文件(通過openssl提供的命令或API)都需輸入口令.如果覺得不方便,也可以去除這個口令,但一定要采取其他的保護措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交給CA簽名后形成服務端自己的證書.屏幕上將有提示,依照其指示一步一步輸入要求的個人信息即可.

3.對客戶端也作同樣的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR文件必須有CA的簽名才可形成證書.可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢.
   1)在bin目錄下新建目錄 demoCA、demoCA/certs、demoCA/certs  、 demoCA/newcerts
   2) 在demoCA建立一個空文件 index.txt
   3) 在demoCA建立一個文本文件 serial, 沒有擴展名,內容是一個合法的16進制數字,例如 0000 
    
   4) openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

5.用生成的CA的證書為剛才生成的server.csr,client.csr文件簽名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

ok,到了這里應該已經創建了可以使用的證書了,如果在為文件簽名的時候有錯誤,那多半是信息不正確,這時可以去清空一下 index.txt 里的信息,

然后重新執行第5步里失敗的操作。 

接著可以測試一下 tornado 使用 ssl 的證書了。

寫個測試項目,其實也就一個py文件,像:

tornado中怎么實現https訪問功能

tornado中怎么實現https訪問功能代碼

import os
import ssl
from tornado.httpserver import HTTPServer
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop

class TestHandler(RequestHandler):
    def get(self):
        self.write("Hello, World!\n")

settings = {
    "static_path" : os.path.join(os.path.dirname(__file__), "static"),
}

application = Application([
    (r"/", TestHandler),
], **settings)

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

 然后把相關的證書扔到 py 文件的目錄下。改成相應的名字。

然后開啟服務,

python test.py

 接著用瀏覽器或curl啥的嘗試訪問一下,我這里就用curl了...

curl https://localhost:8000 #我這里用的默認端口是 8000

關于tornado中怎么實現https訪問功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苗栗市| 湟源县| 安宁市| 北川| 子长县| 惠来县| 盐边县| 达州市| 安吉县| 临沧市| 如东县| 东乡| 栾川县| 通榆县| 肥城市| 三穗县| 清河县| 乌拉特中旗| 乐安县| 吉木乃县| 拜城县| 嵩明县| 雷山县| 罗江县| 资源县| 聊城市| 丽水市| 称多县| 那坡县| 开封市| 定兴县| 浏阳市| 盐山县| 万源市| 虎林市| 扶绥县| 杨浦区| 光山县| 伽师县| 大余县| 肇庆市|