美文网首页
【Flask】在Flask中使用HTTPS

【Flask】在Flask中使用HTTPS

作者: 阏男秀 | 来源:发表于2017-04-25 10:31 被阅读1230次

    前言

    这一篇是详细描述在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')
    
    

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

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

    启动项目后,浏览器访问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
    

    注意事项

    • 浏览器导入证书需要.p12格式文件。

    本文首发于CSDN:http://blog.csdn.net/yannanxiu/article/details/70672744

    相关文章

      网友评论

          本文标题:【Flask】在Flask中使用HTTPS

          本文链接:https://www.haomeiwen.com/subject/rxtvzttx.html