如何在java应用服务器中为ssl禁用弱密码套件

时间:2016-04-13 11:45:59

标签: java security ssl encryption java-security

我正在运行自定义Java应用程序服务器。我看到服务器支持一些弱密码套装,例如一些112位密码。我想禁用它们。我在哪里可以做到这一点。我也想启用TLSv1.2。以下是初始化套接字的代码。

        KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(new FileInputStream(sslstore), sslstorepass.toCharArray());
        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
        kmf.init(ks, sslcertpass.toCharArray());

        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(kmf.getKeyManagers(), null, new SecureRandom());
        SSLServerSocketFactory ssf = sc.getServerSocketFactory();
        serverSocket = ssf.createServerSocket(port);

        System.out.println("Socket initialized");

1 个答案:

答案 0 :(得分:2)

JAVA允许在名为java.security的安全策略文件中删除/排除使用密码套件,该文件位于JRE: $PATH/[JRE]/lib/security策略文件中的jdk.tls.disabledAlgorithms属性控制TLS密码选择。 jdk.certpath.disabledAlgorithms控制您在SSL证书中遇到的算法。 Oracle提供了有关此here

的更多信息

在安全策略文件中,如果您输入以下内容:jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 4096它将成为它,因此永远不允许MD5,SHA1,DSA,并且仅当密钥至少为4096位时才允许RSA。

解决tls版本问题。只需要放SSLContext sc = SSLContext.getInstance("TLSv1.2");它将支持所有版本。