如何在java application server中为ssl禁用弱密码套件

如何在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 =

我有一个自定义的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");

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,应用程序将无法支持它