tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能

tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

10年積累的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有施甸免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

其實(shí) Tornado 本身已經(jīng)支持了 SSL ,所以我們這里主要的只是生成可用的證書(shū)。

 

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

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

然后建立一個(gè)  serial 文件,然后用 vim 或其他工具往里面填充任意的16進(jìn)制數(shù)字,如 0000

然后就可以開(kāi)始創(chuàng)建證書(shū)了,這里我參考了另外一位兄弟寫(xiě)的:

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

以后每當(dāng)需讀取此文件(通過(guò)openssl提供的命令或API)都需輸入口令.如果覺(jué)得不方便,也可以去除這個(gè)口令,但一定要采取其他的保護(hù)措施!
去除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簽名后形成服務(wù)端自己的證書(shū).屏幕上將有提示,依照其指示一步一步輸入要求的個(gè)人信息即可.

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

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

5.用生成的CA的證書(shū)為剛才生成的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,到了這里應(yīng)該已經(jīng)創(chuàng)建了可以使用的證書(shū)了,如果在為文件簽名的時(shí)候有錯(cuò)誤,那多半是信息不正確,這時(shí)可以去清空一下 index.txt 里的信息,

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

接著可以測(cè)試一下 tornado 使用 ssl 的證書(shū)了。

寫(xiě)個(gè)測(cè)試項(xiàng)目,其實(shí)也就一個(gè)py文件,像:

tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能

tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能代碼

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()

 然后把相關(guān)的證書(shū)扔到 py 文件的目錄下。改成相應(yīng)的名字。

然后開(kāi)啟服務(wù),

python test.py

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

curl https://localhost:8000 #我這里用的默認(rèn)端口是 8000

關(guān)于tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

文章題目:tornado中怎么實(shí)現(xiàn)https訪問(wèn)功能
網(wǎng)頁(yè)鏈接:http://muchs.cn/article48/ghidhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航品牌網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司