赞
踩
传输层安全 (TLS)及其前身安全套接层 (SSL)是广泛使用的协议。它们旨在通过身份验证、加密和完整性保护来保护客户端和服务器之间的数据传输。
TLS/SSL 技术通常与 HTTP 协议一起用于网站和 Web 应用程序。它还被其他一些服务和协议使用,例如电子邮件(SMTP、POP 和 IMAP 协议)、FTP、聊天(XMPP 协议)、虚拟专用网络 (TLS/SSL VPN) 和网络设备。
为了保护数据传输,TLS/SSL 使用一个或多个密码套件。密码套件是身份验证、加密和消息身份验证代码 (MAC) 算法的组合。它们用于协商TLS/SSL 连接的安全设置以及数据传输。
以下是密码套件可能使用的算法的示例。
功能 | 算法 |
---|---|
密钥交换 | RSA、Diffie-Hellman、ECDH、SRP、PSK |
验证 | RSA、DSA、ECDSA |
批量密码 | RC4、3DES、AES |
消息认证 | HMAC-SHA256、HMAC-SHA1、HMAC-MD5 |
TLS 现在是多个监管标准的要求。在没有 TLS 的情况下,主要浏览器会将站点标记为不安全。因此,它也可能被视为服务网站和 Web 应用程序的要求。但是,获得正确的 TLS 实现可能很困难。糟糕的 TLS 配置可能会提供错误的安全感,并使网站和 Web 应用程序容易受到攻击。
许多常见的 TLS 错误配置是由选择错误的密码套件引起的。旧的或过时的密码套件通常容易受到攻击。如果您使用它们,攻击者可能会拦截或修改传输中的数据。以下是安全 SSL/TLS 实施的建议列表。
SSL 2.0 是 SSL 的第一个公共版本。它于 1995 年发布。此版本的 SSL 包含几个安全问题。1996 年,协议完全重新设计,SSL 3.0 发布。
由于安全问题,SSL 2.0 协议是不安全的,您应该完全禁用它。由于POODLE(Padding Oracle On Downgraded Legacy Encryption)漏洞,SSL 3.0 也是不安全的,您也应该禁用它。如果启用,攻击者可能会检索安全连接的纯文本内容。此外,您不能在 SSL 3.0 中使用椭圆曲线密码术(见下文)。
Internet Explorer 6 是唯一仍使用 SSL 3.0 的浏览器。因此,除非您仍然需要支持旧版 Internet Explorer 6浏览器,否则您应该禁用 SSL 3.0,如下所述。
除非您需要支持旧版浏览器,否则您还应该禁用 TLS 1.0 和 TLS 1.1。PCI DSS(支付卡行业数据安全标准)规定自 2018 年 6 月 30 日起可能不再使用 TLS 1.0。它还强烈建议您禁用 TLS 1.1。这些协议可能会受到FREAK、POODLE、BEAST 和 CRIME等漏洞的影响。如果您仍必须支持 TLS 1.0,请禁用 TLS 1.0 压缩以避免 CRIME 攻击。
您还应该禁用弱密码,例如 DES 和 RC4。DES 可以在几个小时内被破解,并且发现 RC4 比以前想象的要弱。过去,建议将 RC4 作为一种减轻 BEAST 攻击的方法。然而,由于对 RC4 的最新攻击,微软已经发布了针对它的警告。PCI DSS 还禁止使用 RC4 批量密码。
如果禁用 TLS 1.0 和 TLS 1.1,以下用户代理及其旧版本可能会受到影响(不同操作系统上的特定用户代理版本可能会有所不同)。
根据您的业务用例(例如,需要支持旧版浏览器和法规要求),您可能需要使用稍微不同的密码套件配置。您可以使用Mozilla SSL 配置生成器来获得使用不同浏览器配置文件(现代、中级或旧)的最佳 TLS 配置。
以下是现代配置文件的细分(最旧的兼容客户端:Firefox 27、Chrome 30、Windows 7 上的 Internet Explorer 11、Edge、Opera 17、Safari 9、Android 5.0 和 Java 8)。启用/禁用 TLS 协议和密码套件的语法会因 Web 服务器而略有不同。
- # Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
- ssl_protocols TLSv1.2;
-
- # Enable modern TLS cipher suites
- ssl_ciphers
- 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
-
- # The order of cipher suites matters
- ssl_prefer_server_ciphers on;
- # Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
- SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
-
- # Enable modern TLS cipher suites
- SSLCipherSuite
- ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
-
- # The order of cipher suites matters
- SSLHonorCipherOrder on
-
- # Disable TLS compression
- SSLCompression off
-
- # Necessary for Perfect Forward Secrecy (PFS)
- SSLSessionTickets off
下表将上面的密码套件字符串按顺序分解为首选(最佳密钥交换算法/最强加密优先)。
Order | Key Exchange Algorithm | Authentication Algorithm | Bulk Encryption Algorithm | Mac Algorithm |
---|---|---|---|---|
#1 | Elliptic Curve Diffie–Hellman (ECDH) | Elliptic Curve Digital Signature Algorithm (ECDSA) | AES 256 in Galois Counter Mode (AES256-GCM) | SHA384 |
#2 | Elliptic Curve Diffie–Hellman (ECDH) | RSA | AES 256 in Galois Counter Mode (AES256-GCM) | SHA384 |
#3 | Elliptic curve Diffie–Hellman (ECDH) | Elliptic Curve Digital Signature Algorithm (ECDSA) | ChaCha20 (CHACHA20) | POLY1305 |
#4 | Elliptic curve Diffie–Hellman (ECDH) | RSA | ChaCha20 (CHACHA20) | POLY1305 |
#5 | Elliptic Curve Diffie–Hellman (ECDH) | Elliptic Curve Digital Signature Algorithm (ECDSA) | AES 128 in Galois Counter Mode (AES128-GCM) | SHA256 |
#6 | Elliptic curve Diffie–Hellman (ECDH) | RSA | AES 128 in Galois Counter Mode (AES128-GCM) | SHA256 |
#7 | Elliptic Curve Diffie–Hellman (ECDH) | Elliptic Curve Digital Signature Algorithm (ECDSA) | AES 256 (AES256) | SHA384 |
#8 | Elliptic curve Diffie–Hellman (ECDH) | RSA | AES 256 (AES256) | SHA384 |
#9 | Elliptic curve Diffie–Hellman (ECDH) | Elliptic Curve Digital Signature Algorithm (ECDSA) | AES 128 (AES128) | SHA256 |
#10 | Elliptic curve Diffie–Hellman (ECDH) | RSA | AES 128 (AES128) | SHA256 |
此字符串在现代浏览器和 TLS/SSL 客户端中提供最强的加密(Galois/Counter 模式中的 AES 仅在 TLS 1.2 中受支持)。此外,如果服务器和 TLS/SSL 客户端都支持此字符串(在 Apache HTTP 服务器上您必须设置SSLSessionTickets
为),则此字符串还提供完美前向保密 (PFS off
)。
测试您的网站或 Web 应用程序是否使用易受攻击的 SSL/TLS 配置的一种简单方法是使用在线 Acunetix漏洞扫描程序运行自动扫描,其中包括网络安全扫描程序。同时,您还可以测试网络漏洞。进行演示并了解有关对您的网站或 Web 应用程序运行扫描的更多信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。