前言
這一篇是詳細描述在Flask框架下中使用HTTPS的教程涡上。
開發(fā)工具
- Windows 10 x64
- Python2/3
- Flask 0.12
- CA證書
準備工作
首先要有CA證書,由于這篇是示例教程,所以使用自簽證書即可穆端。生成自簽證書可以參考這里:《在局域網(wǎng)里創(chuàng)建個人CA證書》。
根據(jù)上面的教程价认,我們手上就已經(jīng)有了CA根證書油挥、server證書和client證書。client證書暫時用不上暇检。
代碼示例
首先上一份代碼示例hello.py
:
# coding=utf-8
# Python 2
"""
除了安裝Flask产阱,還需要安裝 Python 的 openssl 的類庫:
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')
上面代碼是使用本機的證書,如果自定義證書路徑块仆,可以改成下面的代碼构蹬。
# ……
if __name__ == '__main__':
app.run(debug=True, ssl_context=(
"server/server-cert.pem",
"server/server-key.pem")
)
啟動項目后,瀏覽器訪問https://127.0.0.1:5000/
悔据,會
出現(xiàn)下面頁面庄敛。
這是由于瀏覽器還沒有相關證書的原因。
進入瀏覽器設置找到「證書管理」科汗,在「受信任的根證書頒發(fā)機構(gòu)」添加之前生成的CA證書(不是server證書)藻烤。
重啟瀏覽器,再次訪問https://127.0.0.1:5000/
头滔,出現(xiàn)
成功怖亭!
要在Gunicorn中使用HTTPS,輸入下面命令即可
gunicorn -b0.0.0.0:8000 hello:app --keyfile server/server-key.pem --certfile server/server-cert.pem
注意事項
- 瀏覽器導入證書需要
.p12
格式文件坤检。
本文首發(fā)于CSDN:http://blog.csdn.net/yannanxiu/article/details/70672744