背景
项目安全扫描出现的漏洞,记录一下修复过程。
HTTPS 协议缺陷
整改
首先考虑 TLS 1.3 目前版本太新,兼容性未知,同时机房的 WAF 等安全设备是否支持该协议。
先咨询机房得到回复,不支持 TLS1.3。同时在测试环境配置 Nginx 只保留 TLS 1.3。经过验证,业务不可用。
退而求其次,使用 TLS 1.2,但将弱算法禁掉。
如何区分哪些是弱算法呢?Mozilla 有提供相关指南,就是开发了火狐浏览器的那家公司。
https://infosec.mozilla.org/guidelines/web_security#transport-layer-security-tlsssl
太长懒得看没关系,Mozilla 官方提供了一个配置工具,可以直接生成安全的 SSL 配置。
https://ssl-config.mozilla.org/
Server Software 这里勾选你的中间件,这里我们选 Nginx
Mozilla Configuration 这里有 3 种
- Modern 是最安全但兼容性最差的。
- Intermediate 是兼具安全和兼容性的
- Old 字面意思,兼容性最好的,ie8,Windows xp 都能支持,安全性则最差
这里我们选 Intermediate。
最后在 Environment 输入你的 Nginx 、OpenSSL 版本,会自动生成配置
得到的配置如下,粘贴到 Nginx.conf 即可。
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
ssl_dhparam /path/to/dhparam;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
# replace with the IP address of your resolver
resolver 127.0.0.1;
}
标签:tls,1.2,ssl,GCM,RSA,server,nginx,ECDHE,path
From: https://www.cnblogs.com/fsckzy/p/16879868.html