Java: Could not generate DH keypair

Si te aparece este error, sigue leyendo…

javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1762)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1723)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1706)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1237)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1214)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)

Lo mas probable es que te suceda una suma de las siguientes cosas:

  • Estas usando SSL/TLS.
  • Tu software cliente usa Java 1.6 o anterior.
  • El lado servidor SSL esta usando DHE (Diffie-Hellman Ephemeral) con +1024bits.

Las posibles soluciones, por orden de interes, son:

  1. Actualizar a Java 1.7 o posterior.
  2. Instalar un security provider extra, con soporte de ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) en tu JRE, como BouncyCastle.
  3. Cambiar los ciphers suites default de Java deshabilitando los DHE.
  4. Si tu servidor lo permite, cambiar el orden de los cipher suites.

Un ejemplo (punto 3) de System Property:

-Dhttps.cipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA

Un ejemplo (punto 4) de configuracion para Apache/SSL:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite EECDH+aRSA+AESGCM:EECDH+aRSA+AES+SHA384:EECDH+aRSA+AES+SHA256:EECDH+aRSA+AES:ECDHE-RSA-DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:EDH+aRSA+AESGCM:EDH+aRSA+AES+SHA256:EDH+aRSA+CAMELLIA:AES128-SHA:RC4-SHA:EDH+aRSA+AES:EDH-RSA-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCompression off

Referencias:
Java SE Downloads
BouncyCastle Provider Installation
SunJSSE cipher suites
JSSE Reference guide
Apache Mod_SSL

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: