【Flask】在Flask中使用HTTPS

前言

這一篇是詳細(xì)描述在Flask框架下中使用HTTPS的教程。

開(kāi)發(fā)工具

  • Windows 10 x64
  • Python2/3
  • Flask 0.12
  • CA證書(shū)

準(zhǔn)備工作

首先要有CA證書(shū),由于這篇是示例教程,所以使用自簽證書(shū)即可。生成自簽證書(shū)可以參考這里:《在局域網(wǎng)里創(chuàng)建個(gè)人CA證書(shū)》。

根據(jù)上面的教程,我們手上就已經(jīng)有了CA根證書(shū)、server證書(shū)和client證書(shū)。client證書(shū)暫時(shí)用不上。

代碼示例

首先上一份代碼示例hello.py

# coding=utf-8
# Python 2
"""
除了安裝Flask,還需要安裝 Python 的 openssl 的類(lèi)庫(kù):
pip install pyOpenSSL
"""

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello World"

if __name__ == '__main__':
    app.run(ssl_context='adhoc')

上面代碼是使用本機(jī)的證書(shū),如果自定義證書(shū)路徑,可以改成下面的代碼。

# ……
if __name__ == '__main__':
    app.run(debug=True, ssl_context=(
        "server/server-cert.pem",
        "server/server-key.pem")
    )

啟動(dòng)項(xiàng)目后,瀏覽器訪(fǎng)問(wèn)https://127.0.0.1:5000/,會(huì)
出現(xiàn)下面頁(yè)面。

不安全頁(yè)面

這是由于瀏覽器還沒(méi)有相關(guān)證書(shū)的原因。

進(jìn)入瀏覽器設(shè)置找到「證書(shū)管理」,在「受信任的根證書(shū)頒發(fā)機(jī)構(gòu)」添加之前生成的CA證書(shū)(不是server證書(shū))。

導(dǎo)入證書(shū)

重啟瀏覽器,再次訪(fǎng)問(wèn)https://127.0.0.1:5000/,出現(xiàn)

安全頁(yè)面

成功!

要在Gunicorn中使用HTTPS,輸入下面命令即可

gunicorn -b0.0.0.0:8000 hello:app --keyfile server/server-key.pem --certfile server/server-cert.pem

注意事項(xiàng)

  • 瀏覽器導(dǎo)入證書(shū)需要.p12格式文件。

本文首發(fā)于CSDN:http://blog.csdn.net/yannanxiu/article/details/70672744

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容