如何在java application server中为ssl禁用弱密码套件
我有一个自定义的Java应用服务器正在运行。我看到服务器支持一些弱密码,例如一些112位密码。我想禁用这些。我在哪里可以不这样做。我还想启用TLSv1.2。下面是初始化套接字的代码如何在java application server中为ssl禁用弱密码套件,java,security,ssl,encryption,java-security,Java,Security,Ssl,Encryption,Java Security,我有一个自定义的Java应用服务器正在运行。我看到服务器支持一些弱密码,例如一些112位密码。我想禁用这些。我在哪里可以不这样做。我还想启用TLSv1.2。下面是初始化套接字的代码 KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(sslstore), sslstorepass.toCharArray()); KeyManagerFactory kmf =
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允许在名为
JAVA.security
的安全策略文件中删除/排除密码套件,该文件位于JRE:$PATH/[JRE]/lib/security
策略文件中的jdk.tls.disabledAlgorithms
属性控制tls密码选择。jdk.certpath.disabledAlgorithms
控制您将在SSL证书中遇到的算法。Oracle对此有更多信息
在安全策略文件中,如果您输入以下内容:jdk.tls.disabledAlgorithms=MD5,SHA1,DSA,RSA keySize<4096
,它将成功,因此永远不允许使用MD5,SHA1,DSA,并且仅当密钥至少为4096位时才允许使用RSA
解决tls版本问题。只需将
SSLContext sc=SSLContext.getInstance(“TLSv1.2”)代码>它将支持所有版本。TLS版本的afaik应用程序级配置无法覆盖java.security配置。因此,如果将TLSv1.1添加到java.security,应用程序将无法支持它