Python-Flask配置https证书
零、问题
错误:SSL Version 2 and 3 Protocol Detection
一、说明
1、通过使用flask 框架配置https证书进行HTTPs证书配置后会被扫描到漏洞, 漏洞描述如下:
远程服务接受使用SSL2.0和/或SSL3.0加密的连接。这些版本的SSL受到多个加密缺陷的影响,包括:-带CBCCiphers的不安全的填充方案。-不安全的会话重新协商和恢复方案。攻击者可以利用这些缺陷来进行中间人攻击或解密受影响服务和客户之间的通信。尽管SSL/TLS具有用于选择协议的最高支持版本的安全方法(但是只有当客户端或服务器支持更好时,才会使用这些版本,许多Web浏览器以不安全的方式实现这一点,允许攻击者降级连接(如贵宾犬)。因此,建议完全禁用这些协议。NIST已确定SSL3.0不再可接受安全通信。截至在PCIDSSV3.1中的执行之日,任何版本的SSL都不会符合PCISSC对“强密加密”的定义。
2、修改建议
请参阅应用程序的文档以禁用SSL2.0和3.0。使用TLS1.2(具有批准的密码套件)或更高。
3、参考文档
https://www.schneier.com/academic/paperfiles/paper-ssl.pdf
http://www.nessus.org/u?b06c7e95
http://www.nessus.org/u?247c4540
https://www.openssl.org/~bodo/ssl-poodle.pdf
http://www.nessus.org/u?5d15ba70
https://www.imperialviolet.org/2014/10/14/poodle.html
https://tools.ietf.org/html/rfc7507
https://tools.ietf.org/html/rfc7568
二、修改方法
原配置方法
gunicorn -w 20 -b 0.0.0.0:8081 --certfile=/run/secrets/[5573733_work.pd-italent.com](http://5573733_work.pd-italent.com/).pem --keyfile=/run/secrets/[5573733_work.pd-italent.com](http://5573733_work.pd-italent.com/).key run:flask_app --timeout 300
修改为
gunicorn -w 20 -b 0.0.0.0:8081 --ssl-version 5 --ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256 --certfile=/run/secrets/[5573733_work.pd-italent.com](http://5573733_work.pd-italent.com/).pem --keyfile=/run/secrets/[5573733_work.pd-italent.com](http://5573733_work.pd-italent.com/).key run:flask_app --timeout 300
三、参数说明
1, --ssl-version 表示使用的ssl加密的版本, 5 表示 TSLv1.2, 目前效果较好的加密方式
2, --ciphers 表示加密算法, 默认支持的算法较多,大部分的安全性不高, 建议使用:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256 进行加密。