前言
這一篇是詳細(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