当前位置:   article > 正文

【Flask】在Flask中使用HTTPS

【Flask】在Flask中使用HTTPS

前言

这一篇是详细描述在Flask框架下中使用HTTPS的教程。

开发工具

  • Windows 10 x64
  • Python2/3
  • Flask 0.12
  • CA证书

准备工作

首先要有CA证书,由于这篇是示例教程,所以使用自签证书即可。生成自签证书可以参考这里:《在局域网里创建个人CA证书》。

根据上面的教程,我们手上就已经有了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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

上面代码是使用本机的证书,如果自定义证书路径,可以改成下面的代码。

# ……
if __name__ == '__main__':
    app.run(debug=True, ssl_context=(
        "server/server-cert.pem",
        "server/server-key.pem")
    )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动项目后,浏览器访问https://127.0.0.1:5000/,会出现下面页面。

不安全页面

这是由于浏览器还没有相关证书的原因。

进入浏览器设置找到「证书管理」,在「受信任的根证书颁发机构」添加之前生成的CA证书(不是server证书)。

导入证书

重启浏览器,再次访问https://127.0.0.1:5000/,出现

安全页面

成功!

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

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

注意事项

  • 浏览器导入证书需要.p12格式文件。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/439874
推荐阅读
相关标签
  

闽ICP备14008679号