실제로 최신 Java 8 버전으로 사용자 지정 DHE 매개 변수 를 지정할 수 있습니다 . 이것은 JSSE TLS 구현을 사용하는 한 응용 프로그램의 독립입니다.
먼저 ( -Djdk.tls.ephemeralDHKeySize=1024
또는 -Djdk.tls.ephemeralDHKeySize=2048
) 를 사용하려면 DHE 키의 크기를 지정해야합니다 . 서버에서는 DHE에 대해 사전 정의 된 생성기 / 프라임 조합을 사용합니다. Java 8에서는 1024 또는 2048 만 사용할 수 있으므로 JDK 9는 더 큰 크기를 지원합니다 .
다른 조합을 제공하려면 jre / lib / security / Java.security에서 jdk.tls.server.defaultDHEParameters
security 특성을 사용하여 지정할 수 있습니다 (8u51부터). 매개 변수 목록 (사용 된 각 키 크기마다 하나씩)을 취하고 소수와 제너레이터 (일반적으로 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 Server에 연결할 때 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 비트)의 기본 매개 변수는 ParameterCache에 정의 된대로 긴 생성기 "30470ad..529252"의 경우 "e9e642 ... 7a3daf" 입니다.