SSL Handshake Exception: Could Not Generate DH Keypair
Q: When connecting to certain IRC servers via SSL with Java, why does the SSL handshake process throw a "Could not generate DH keypair" exception?
A: This exception occurs when a server utilizes Diffie-Hellman (DH) key exchange with a prime size that exceeds the default Java implementation's maximum of 1024 bits.
Diagnosis:
The message "Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)" indicates that the server requests a prime size larger than 1024 bits, triggering this limitation in Java.
Solution:
Workaround:
Use BouncyCastle's JCE implementation as a workaround to handle the larger prime size.
Permanent Fix:
Update to Java 9 or later, as the issue was fixed in JDK-7044060. However, note that the maximum acceptable prime size is still limited to 2048 bits. For prime sizes exceeding 2048 bits, refer to JDK-8072452, which is scheduled for Java 9.
The above is the detailed content of Why Does My Java SSL Handshake Fail with a 'Could Not Generate DH Keypair' Exception?. For more information, please follow other related articles on the PHP Chinese website!