3.1.1. SSL/TLS Protocol Versions (SSL/TLS 协议版本)
停止使用旧的, 不太安全的 SSL/TLS 版本以及开始使用现代的, 更安全的版本都很重要; 因此, 以下是关于 TLS/SSL 协议版本的建议:
-
实现绝对不能协商 SSL 版本 2。
理由: 今天, SSLv2 被认为是不安全的 [RFC6176]。
-
实现绝对不能协商 SSL 版本 3。
理由: SSLv3 [RFC6101] 是对 SSLv2 的改进, 修补了一些重大安全漏洞, 但不支持强密码套件。SSLv3 不支持 TLS 扩展, 其中一些 (例如,
renegotiation_info[RFC5746]) 对安全至关重要。此外, 随着 POODLE 攻击 [POODLE] 的出现, SSLv3 现在被广泛认为是根本不安全的。有关更多详细信息, 请参见 [DEP-SSLv3]。 -
实现不应该协商 TLS 版本 1.0 [RFC2246]; 唯一的例外是在协商中没有更高版本可用时。
理由: TLS 1.0 (发布于 1999 年) 不支持许多现代的强密码套件。此外, TLS 1.0 对于基于 CBC 的密码套件缺少每记录初始化向量 (IV), 并且不会针对常见的填充错误发出警告。
-
实现不应该协商 TLS 版本 1.1 [RFC4346]; 唯一的例外是在协商中没有更高版本可用时。
理由: TLS 1.1 (发布于 2006 年) 是对 TLS 1.0 的安全改进, 但仍然不支持某些更强的密码套件。
-
实现必须支持 TLS 1.2 [RFC5246], 并且必须优先协商 TLS 版本 1.2 而不是更早的 TLS 版本。
理由: 几个更强的密码套件仅在 TLS 1.2 (发布于 2008 年) 中可用。事实上, 本文档推荐的密码套件 (下面的第 4.2 节) 仅在 TLS 1.2 中可用。
本 BCP 适用于 TLS 1.2 以及更早的版本。读者不能安全地假设本 BCP 中的建议适用于任何未来版本的 TLS。