カスタム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証明書で遭遇するアルゴリズムを制御します。オラクルはこれについてより多くの情報を持っています ここ 。
セキュリティポリシーファイルで、次のように入力した場合:jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 4096
作成されるため、MD5、SHA1、DSAは許可されず、RSAは、キーが少なくとも4096ビットの場合にのみ許可されます。 TLSバージョンの強制に関しては、これはオペレーティングシステム(Linux、Solaris、Windows、BSDなど)、サーバー(Apache、IIS、その他)に依存します。