为了在Python Flask中支持https,必须在app.run()命令中指定ssl_context选项。
这是documented:
ssl_context - 连接的SSL上下文。 ssl.SSLContext,形式(cert_file,pkey_file)中的元组,字符串' adhoc'如果服务器应自动创建一个,或者无以禁用SSL(这是默认值)。
以下是枚举选项:
在这些背景下,这些选项之间有什么区别:
答案 0 :(得分:5)
使用前两个选项,您可以提供自己的证书,如果您管理它们,可能(应该)由公认的机构或您的客户签名(如果您的应用程序部署在您的上下文中,则会发生这种情况)可以在每台计算机上安装证书,或者如果您的客户端不是Web浏览器,而是您的应用程序,您可以随身携带证书。)
这将显示他正在与真实服务器通信的用户,而不是那些试图窃听流量的人。
第三个选项将创建一个自签名证书,不保证用户在此事上。
就用户体验而言,当客户端是Web浏览器时使用自签名证书会引发有关证书有效性的令人担忧的消息,并说“严肃的网站不会要求您盲目接受未知证书” ”。
总结一下,你有三个选择(你的选项1和2最后是相同的):
答案 1 :(得分:4)
3. Security
是唯一重要的,答案是“从不在生产中使用Werkzeug / Flask开发服务器。” ssl_context
选项是为了方便测试,但生产应用程序应该使用真实的应用程序和Web服务器,如uWSGI和Nginx,适当配置Nginx以提供真正的TLS证书。