限制JRE级别的密码套件

时间:2013-09-03 10:20:02

标签: java jce

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

socket.setEnabledCipherSuites(ENABLED_SECURE_CIPHER_SUITES);

或Tomcat连接器

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

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

JRE:Oracle JRE 1.7.0_17

1 个答案:

答案 0 :(得分:10)

好吧,我设法让它发挥作用。感谢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

支持这两个属性