【问题标题】:Restrict cipher suites on JRE level在 JRE 级别限制密码套件
【发布时间】:2013-09-03 10:20:02
【问题描述】:

我们的 Java 应用程序公开了许多不同的接口(SMTP、FTP、HTTP),由 SSL/TLS 保护。现在的目标是将这些接口上允许的密码套件限制为仅包含“强”密码套件。我已经有一个列表,并且很清楚如何使它适用于特定的套接字

socket.setEnabledCipherSuites(ENABLED_SECURE_CIPHER_SUITES);

或用于 Tomcat 连接器

 <Connector port="443" ciphers="..."/>

问题是应用程序中已经有 5 个地方我应该手动应用此限制。 Common SocketFactory 似乎没有帮助,因为向第三方 API 或框架提供自定义 SocketFactory 并不总是可行的。是否有可能以某种方式在 JRE 级别上引入这种限制,例如使用 JCE 提供程序配置或策略文件?

JRE:Oracle JRE 1.7.0_17

【问题讨论】:

  • 定义“强”。 Java 已经限制了启用的密码套件。你知道Networking Properties吗?
  • 这个问题与特定密码的强度无关。我有一个固定的允许密码列表,我无法更改它。例如,根本不允许使用 RC4。因此,默认的 Java 限制是不够的。我还检查了网络属性,但没有发现与密码套件相关的属性。
  • 参见 JSSE 参考指南。

标签: java jce


【解决方案1】:

嗯,我设法让它发挥作用。感谢 EJP 指出了正确的方向。 从 Java 1.7 开始,$JRE_HOME/lib/security/java.security 中有两个附加属性:

jdk.certpath.disabledAlgorithms=MD2

控制认证路径构建和验证的算法。

jdk.tls.disabledAlgorithms=MD5, SHA1, RC4, RSA keySize < 1024

用于 SSL/TLS 处理的 JVM 范围的算法限制,这是我一直在寻找的。符号在这里很明显;可以禁止某些算法或限制密钥大小。 Oracle JRE 7、Open JRE 7 和(令人惊讶的)IBM Java v7

支持这两个属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多