跳到主要内容

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。