2016-04-01 16 views
3

私はDHキーのサイズを1024ビットから2048ビットに増やそうとしています。これはHow to expand DH key size to 2048 in java 8です。Java JVMホットスポットephemeralDHKeySize

ただし、動作していないようです。関連情報:私が行うことができます他に何

openssl s_client -connect server:port -cipher "EDH" 2>/dev/null | grep -ie "Server .* key" 
Server Temp Key: DH, 1024 bits 

任意のアイデア:私はクライアントからそのサーバーに接続する場合

java -version 
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

そして

System.out.println(Security.getProperty("jdk.tls.ephemeralDHKeySize")); 
2048 

しかし、それは1024ビットを使用しています?

+0

盲目的な推測:キーのサイズはセキュリティポリシーによって制限されている可能性がありますか?無制限強度ポリシーをインストールしようとしましたか? http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html – DevCybran

+0

どのプラットフォームを実行していますか?どのバージョンのopensslを使用して接続していますか? ( 'openssl version'が教えてくれるでしょう) –

+0

Redhat 6プラットフォーム、opensslバージョンをチェックしてください、1.0.2g – Michael

答えて

1

私はSecurity.getProperty("jdk.tls.ephemeralDHKeySize")にDH鍵のサイズを確認することを心配しています。 jdk.tls.ephemeralDHKeySizeプロパティはセキュリティプロパティではありません。システムプロパティです。正しく設定していない可能性があります。このように設定している場合:

Security.setProperty("jdk.tls.ephemeralDHKeySize", "2048"); // don't do this 

これはうまくいかないでしょう。あなたのプログラムのコマンドラインで

-Djdk.tls.ephemeralDHKeySize=2048 

、またはこのようにそれを設定します:いずれかの通過を試してみてくださいコードで

System.setProperty("jdk.tls.ephemeralDHKeySize", "2048"); 

を。

+2

コードで設定した場合、 'sun.security.ssl.ServerHandshaker'がクラスがロードされる前に、最初にSSL操作が行われる前であることを確認してください。プロパティがチェックされてキャッシュされるためです。 –

+0

@Pete Clark、hmm interesting。私は実際にコードで設定しません。JavaHome/jre/lib/securityにある 'java.security'ファイルに設定します。次に、私が 'System.getProperty'を実行すると、値(null)が見つかりません。私は 'Security.getProperty'を実行したときにのみそれを検出します。だから、基本的にはjava.securityファイルで設定するのは間違っていると思いますか? – Michael

+0

@Pete Clark、解決済み! Djdkなどを渡すコマンドが働いた。 java.securityプロパティが機能しない理由は何ですか?これらの設定はJVM全体に適用されると思いますので、JVM内で実行されるプロセスごとに個別に設定する必要はありません。 – Michael

関連する問題