https相比于http更加安全,那么用flask写出来的web程序如何支持https呢?可以非常肯定的讲,flask本身只是一个网络框架,因此,仅在flask上做手术是不能美容出一个可以支持https的web程序的。通常,flask在部署时,会用到nginx或者apache,这类服务器则是可以通过配置ssl文件,来让flask写出来的web程序支持https的,但我今天要介绍的,则是更简单的方法。
gevent网络库,可以作为flask的wsgi容器,其性能,我没有测试验证过,但感觉还不错,gevent是支持ssl的。
from gevent.wsgi import WSGIServer
from app import app
keyfilename = None
certfilename = None
if servermode.mode==0:
keyfilename = 'server.key.unsecure'
certfilename = 'server.crt'
else:
keyfilename = os.path.join(config.m_config['sslfile'],'server.key.unsecure')
certfilename = os.path.join(config.m_config['sslfile'],'server.crt')
http_server = WSGIServer(('0.0.0.0', 5500), app,keyfile=keyfilename,certfile=certfilename)
http_server.serve_forever()
如果程序不需要在外网访问,只是内部使用,那么安全证书就完全可以自己来生成,需注意的是,生成key以后,每次启动时都需要填写个什么密码,这很讨厌,但有办法生成一个不需要填写密码的key文件,也就是这个server.key.unsecure,具体方法很简单,百度输入框输入 server.key.unsecure 自行搜索,答案很丰富。</span>
通过上面的设置,你写的网站就可以通过https来访问了。代码是我从一个项目里直接摘抄过来的,没来得及修改,但不难看得懂。