実際、最近のJava 8バージョンではカスタムDHEパラメータを指定できます。これは、アプリケーションの独立性です(JSSE TLS実装を使用している限り)。
最初に、使用するDHEキーのサイズを指定する必要があります(-Djdk.tls.ephemeralDHKeySize=1024
または-Djdk.tls.ephemeralDHKeySize=2048
)。サーバーでは、これはDHEに対して事前定義されたジェネレーター/プライムの組み合わせを使用します。Java 8では1024または2048しか使用できないため、JDK 9はより大きなサイズをサポートします。
別の組み合わせを提供する場合は、jre / lib / security / Java.securityでjdk.tls.server.defaultDHEParameters
セキュリティプロパティを指定します(8u51以降)。パラメータのリスト(使用するキーサイズごとに1つ)を取り、素数とジェネレータ(通常は2または5)を16進数として含める必要があります。
あなたが使用した場合openssl dhparam -out dhparam2048.pem 2048
、新たなペアを生成するために、あなたは使うことができopenssl dhparam -noout -text -check -in dhparam2048.pem
、テキストモードでそのファイルを読み込んで印刷します。テキストをコピーしてJavaセキュリティプロパティに貼り付ける必要があります(opensslの16進数表現の間tr -d ':'
を削除するために使用:
)
次にサンプルを示します(1024 bisのみ)。
>openssl dhparam -in p -check -text -noout | tr -d ':'
PKCS#3 DH Parameters: (1024 bit)
prime:
00f7a63b59edcc43a43df12077f0e9
14129c20a73cef95f919896e608ebc
8722776c948765bbbf61542e118329
6c6ea74ecbded3a93aff77a062aba4
fcf04fc01030e65077f5a802605058
65b836368dd5ea389d77691fac0f2c
f7a161c51c8e97ddecb3cf7f872b0c
cfaf54373d5203edcabc575e871bb1
107ec2f30c78ebf403
generator: 2 (0x2)
DH parameters appear to be ok.
そしてこれは
jdk.tls.server.defaultDHEParameters= \
{ \
00f7a63b59edcc43a43df12077f0e9 \
14129c20a73cef95f919896e608ebc \
8722776c948765bbbf61542e118329 \
6c6ea74ecbded3a93aff77a062aba4 \
fcf04fc01030e65077f5a802605058 \
65b836368dd5ea389d77691fac0f2c \
f7a161c51c8e97ddecb3cf7f872b0c \
cfaf54373d5203edcabc575e871bb1 \
107ec2f30c78ebf403, 2 }
多くの場合、プロセスが単純ではないため、サーバーを再起動し、サーバーが実際にこのプライムを使用していることを確認する必要があります(デフォルトのものではありません)。デフォルトはsourceで定義されています。2048ビットの場合、素数はTLS FFDHEドラフトからです。
たとえば、openssl s_clientを実行している場合、Java 8 JSSEサーバーに接続すると、1024ビットの素数(ffffff ffffffffffc90f ... 5381ffffffffffffffff)が表示されます。
>openssl s_client -msg -cipher DHE-RSA-AES128-SHA256 -connect localhost:1234
...
<<< TLS 1.2 Handshake [length 018f], ServerKeyExchange
0c 00 01 8b 00 80 ff ff ff ff ff ff ff ff c9 0f
da a2 21 68 c2 34 c4 c6 62 8b 80 dc 1c d1 29 02
4e 08 8a 67 cc 74 02 0b be a6 3b 13 9b 22 51 4a
08 79 8e 34 04 dd ef 95 19 b3 cd 3a 43 1b 30 2b
0a 6d f2 5f 14 37 4f e1 35 6d 6d 51 c2 45 e4 85
b5 76 62 5e 7e c6 f4 4c 42 e9 a6 37 ed 6b 0b ff
5c b6 f4 06 b7 ed ee 38 6b fb 5a 89 9f a5 ae 9f
24 11 7c 4b 1f e6 49 28 66 51 ec e6 53 81 ff ff
ff ff ff ff ff ff 00 01 02 ...
これの代わりに、インストール時にカスタムパラメータを確認する必要があります。
Java 7のデフォルトパラメータ(768ビット)は、 "e9e642 ... 7a3daf"となり、ParameterCacheで定義されているように、長いジェネレータ "30470ad..529252"が含まれます。