On this page
禁用TSL1.0
TLS 1.0(传输层安全协议第1.0版)是一种用于在网络上安全传输数据的协议。它在1999年由互联网工程任务组(IETF)发布,作为安全套接字层(SSL)3.0的继任者。SSL是一种早期的安全协议,由网景通讯公司开发。TLS 1.0与SSL 3.0非常相似,但包含了对安全性的改进。
TSL1.0的功能和特点
TLS 1.0的主要目标是在客户端和服务器之间提供隐私和数据完整性。这是通过在传输数据之前建立一个安全连接来实现的。这个过程包括几个关键步骤:
- 握手协议:客户端和服务器之间的通信开始于一个握手过程,用于协商加密算法、交换密钥、验证服务器身份(可选地验证客户端身份)。
- 密钥交换:在握手阶段,双方将商定一个共享密钥,用于对话的加密。
- 加密:数据传输过程中,使用商定的密钥来加密数据,确保传输过程中数据的隐私性和安全性。
- 完整性检查:确保数据在传输过程中未被篡改。
然而,随着时间的推移,TLS 1.0被发现有多个安全漏洞和限制。这些问题包括像BEAST(Browser Exploit Against SSL/TLS)攻击这样的漏洞,以及对现代加密算法的支持不足。这些安全问题促使了对TLS标准的进一步发展,导致了TLS 1.1、TLS 1.2以及最新的TLS 1.3版本的推出。随着这些更新版本的发布,TLS 1.0逐渐被认为是不安全的,并且许多现代浏览器和系统已经停止支持TLS 1.0,以提高安全性。
在Nginx中禁用TSL1.0
可以通过指定SSL协议的方式将TSL1.0排除在外
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
禁用TSL1.0的影响
主要是对兼容性存在一定的影响,对于仍然使用TSL1.0甚至更古老协议的浏览器和系统来说,禁用TSL1.0后会导致在握手阶段的失败。
目前已知在禁用TSL1.0后无法兼容的浏览器和系统:
移动端 | 桌面端 | 其他 |
---|---|---|
Andriod4.3 | IE6/XP | OpenSSL0.9.8y |
Andriod4.2.2 | IE7/VISTA | Java6u45 |
Andriod4.1.1 | IE8/XP | Java7u25 |
Andriod4.0.4 | IE8-10/WIN7 | |
Andriod2.3.7 | Safari5.1.9/OSX10.6.8 | |
IE10/WinPhone8 | Safari6.0.4/OSX10.8.4 |
使用HTTP严格传输安全策略
HTTP严格传输安全,即HSTS(HTTP Strict Transport Security),是一种网络安全策略机制,用于保护网站免受中间人攻击,特别是SSL剥离攻击。HSTS通过强制浏览器仅通过安全的HTTPS连接与服务器通信,来提高安全性。这是通过在HTTP响应头中设置一个名为Strict-Transport-Security的特殊字段实现的。
HSTS的主要功能和特点
- 强制HTTPS连接:当用户首次访问支持HSTS的网站时,网站会通过响应头指示浏览器在后续访问中自动使用HTTPS。这意味着即使用户输入了一个HTTP URL或点击了一个HTTP链接,浏览器也会自动将其转换为HTTPS请求。
- 预加载名单:为了进一步加强安全性,网站可以选择被加入到主流浏览器的HSTS预加载名单中。这意味着浏览器在首次访问网站之前就已经知道必须通过HTTPS来访问这些网站。
- 有效期:Strict-Transport-Security响应头包括一个max-age参数,指定浏览器应该多长时间内只通过HTTPS连接到网站。在这段时间过后,网站必须再次发送HSTS头来续期。
- 子域包含:可选的includeSubDomains指令可以添加到HSTS头中,指示浏览器对网站的所有子域也强制使用HTTPS。
在Nginx中启用HSTS
在NGINX中设置严格传输安全(STS)响应头相对简单,只需要一行配置:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
启用HSTS的注意事项
一旦启用HSTS,在设定的max_age时间内必须确保SSL证书的有效性,这是因为HSTS信息存储在用户浏览器中的一个专门列表中,通过清除缓存和Cookie的方式无法清除这个网站的HSTS的链接策略,因为HSTS是定义在服务器端的。而且大多数浏览器也不允许用户手动清理HSTS列表。
另外,即使在Web服务器中清除了HSTS策略,也只对未访问过网站的新用户有效,对既往用户是仍然无效的。
因此,在第一次尝试引入HSTS机制时,建议使用一个较短的max_age,过期时间短,因此如果出现问题的话也无需等待太长时间。