java - 如何配置 TLS 连接以保护它们免受异常攻击 (CVE 2015-0204)?

标签 java ssl jsse

有关漏洞,请参阅 https://freakattack.com/ .

Mozilla wiki 有一个页面推荐密码套件:https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations

我将如何在 Java 上下文(SSLContext、提供程序配置、Tomcat 连接器等)中应用这些或类似的建议?

最佳答案

从 Java 7 开始,可以通过名为 java.security 的安全策略文件排除密码套件的使用,该文件位于/lib/security 目录中的 Java 运行时环境下。

策略文件定义了 jdk.tls.disabledAlgorithms 属性来控制 TLS 密码选择。还有一个补充属性 jdk.certpath.disabledAlgorithms 来控制 SSL 证书中遇到的算法。您可以在 Oracle 网站上找到此属性的文档:JSSE Reference Guide

默认情况下,从 Java 7 开始,以下策略适用:jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048 这意味着:没有 MD5,没有 SHA1,没有 DSA。仅当 key 长度至少为 2048 位时才允许使用 RSA。 您可以使用此属性进一步定制站点部署以满足特定需求。找到 Java 默认启用的所有密码套件 here在 Ciphers 部分下(除非默认的 SunJSSE 加密提供程序已被明确覆盖且未被使用)。

如您所见,默认情况下禁用所有 EXPORT 密码套件,因此无需为 FREAK 攻击配置任何内容。

根据 Houtman 对问题的上述评论进行编辑:
关于 POODLE:您必须在 Java 7 和 8 中考虑这一点。因为 SSLv3 协议(protocol)仅在默认情况下从 JDK 8u31 中禁用(请参阅协议(protocol) here 部分)。

关于java - 如何配置 TLS 连接以保护它们免受异常攻击 (CVE 2015-0204)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28874311/

相关文章:

java - 有没有办法将 MDB javadoc 作为其描述注入(inject)?

java - 重新验证/重新绘制按钮面板的问题

c++ - QNetworkAccessManager 错误代码 99;仅在某些系统上……

java - Java 中的可序列化、可克隆和内存使用

java - 配置 JBoss 和 Apache 进行远程调试

ssl - 如何检查 SSL_write 是否可行?

ssl - https发送数据时是否需要验证checksum

java - 如何在 Java6 中禁用约束检查(Netscape 证书类型)?

java - WildFly 11 - 使用证书发出 https 请求

java - 如何从 Java 应用程序获取远程 HTTPS 服务器支持的密码列表?