如何将使用app.run启动的Python程序从默认HTTP改为HTTPS运行
Python Web服务app.run切换HTTPS操作方法
以下操作针对Flask等使用app.run方法启动的Python Web框架生效:
1. 准备SSL证书
- 本地测试场景:可以通过openssl命令生成自签名证书,执行以下命令后按提示填写信息即可,生成的
cert.pem为证书文件,key.pem为私钥文件:
自签名证书会触发浏览器安全警告,测试时直接忽略即可。openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365 - 正式使用场景:需申请CA机构签发的可信SSL证书,获取对应的证书文件和私钥文件。
2. 修改app.run启动参数
你原本的启动代码类似如下结构:
app.run(host="你的主机地址", port=你指定的端口)
仅需添加ssl_context参数,传入证书和私钥的文件路径元组即可,示例如下:
app.run( host="你的主机地址", port=443, # HTTPS默认端口,可自定义为其他未占用端口 ssl_context=("cert.pem", "key.pem") # 替换为你的证书、私钥文件实际路径 )
如果是临时测试,也可以直接用框架自带的临时证书生成能力,无需提前生成证书文件:
# adhoc参数会自动生成临时自签名证书,仅可用于临时调试 app.run(host="你的主机地址", port=443, ssl_context="adhoc")
注意事项
- 配置完成后需使用
https://前缀访问服务,若未使用443默认端口,访问地址需加上自定义端口,例如https://你的域名:8443 app.run是框架自带的开发服务器,性能和安全性较低,生产环境不建议使用,推荐通过Nginx反向代理的方式配置HTTPS,稳定性和性能更优。
内容的提问来源于stack exchange,提问作者Anurag Tripathy
相关产品推荐
相关产品推荐

