如何在 java 应用程序服务器中为 ssl 禁用弱密码套件
How to disable weak cipher suits in java application server for ssl
我有一个自定义 Java 应用程序服务器 运行。我看到服务器支持一些弱密码套装,例如一些 112 位密码。我想禁用那些。我在哪里可以穿那个。我还想启用 TLSv1.2。下面是初始化socket的代码
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");
JAVA 允许 removed/excluded 在名为 java.security
的安全策略文件中使用密码套件,该文件位于 JRE: $PATH/[JRE]/lib/security
jdk.tls.disabledAlgorithms
[=策略文件中的 25=] 控制 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");
它将支持所有版本。
我有一个自定义 Java 应用程序服务器 运行。我看到服务器支持一些弱密码套装,例如一些 112 位密码。我想禁用那些。我在哪里可以穿那个。我还想启用 TLSv1.2。下面是初始化socket的代码
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");
JAVA 允许 removed/excluded 在名为 java.security
的安全策略文件中使用密码套件,该文件位于 JRE: $PATH/[JRE]/lib/security
jdk.tls.disabledAlgorithms
[=策略文件中的 25=] 控制 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");
它将支持所有版本。