TLS
TLS全称:Transport Layer Security——安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
该协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。较低的层为TLS记录协议,位于某个可靠的传输协议(如TCP)上面。
TLS的最大优势在于:TLS是独立于应用协议。高层协议可以透明地分布在TLS协议上面。
TLSv1.0
TLSv1.0是于1996年发布的老版本协议,使用的是弱加密算法和系统。比如SHA-1和MD5,这些算法和系统十分脆弱,存在重大安全漏洞,容易受到降级攻击的严重影响。
建议生产环境使用TLS的高版本协议,避免遭受漏洞攻击等,如TLSv1.2。
问题
在ubuntu 20.04下配置nginx ssl时不支持tls1.0/1.1,是因为ubuntu 20.04/openssl 1.1.1默认禁用了不安全的tls协议,可以修改openssl配置文件开启。
启用TLSv1.0
# openssl.cnf首部添加
sed -i '1i openssl_conf = default_conf' /etc/ssl/openssl.cnf
# openssl.cnf尾部添加
cat >> /etc/ssl/openssl.cnf << EOF
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1
EOF
# 使用openssl测试是否支持tls1.0和1.1
openssl s_client -connect www.haiyun.me:443 -tls1_1
openssl s_client -connect www.haiyun.me:443 -tls1
# 重启nginx
service nginx restart
# 如果还没有生效,检查nginx的ssl_protocols和ssl_ciphers配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;