我想在 Tomcat 中启用 SSL key 重新协商,如 https://www.rfc-editor.org/rfc/rfc5746 中所述. Tomcat 将为 SSL 使用 JSSE 实现。我应该使用哪个密码套件来启用它?
- Tomcat 版本:6.0.44
- Java 版本:Java 1.8
- 协议(protocol) - TLS 1.2
请您参考如下方法:
Meta:我不确定这是否是主题,但安全性已暂停。必要时迁移。
所有 Java 8 和 7,以及 6u22 以上的 6,启用根据 5746 的安全重新协商。See the documentation.默认情况下,如果对等方提供或接受它,则使用它;如果对等方不这样做,连接 仍然建立,但重新协商不 完成,因为它会/可能是不安全的。这可以通过两种方式改变:
设置系统属性
sun.security.ssl.allowLegacyHelloMessages
为假。如果对等方不同意 5746,JSSE 将不会建立连接。这实际上并不更安全,但对于头脑简单的基本扫描器和人们来说,它明显更安全谁关心像审计员这样头脑简单的基本扫描仪设置系统属性
sun.security.ssl.allowUnsafeRenegotiation
为真。如果应用程序依赖于消息后检查的对等凭据,则安全性较低。由于客户端总是在任何数据之前检查服务器,这意味着如果服务器请求(不需要)客户端身份验证,并在请求后检查身份验证状态,它可能会错误地接受伪造前缀请求。
5746 的协议(protocol)实现有时在 ClientHello 中使用伪造的“密码套件”(正式名称为 SCSV -- 信号密码套件值)。 JSSE 客户端 可以使用“ciphersuite”名称 TLS_EMPTY_RENEGOTIATION_INFO_SCSV
配置是使用此 SCSV 还是扩展。所有服务器始终使用扩展名,因此此配置对 JSSE 服务器没有影响。