Noticias

SSL ha recibido una clave Diffie-Hellman efímera débil: cómo resolver este problema

SSL received a weak ephemeral Diffie Hellman key  how to solve this problem

En algunos casos, como cuando un certificado SSL no está correctamente instalado en el servidor, aparecerá el siguiente mensaje en el navegador: Ha ocurrido un error al conectar con www.sitio.com. SSL ha recibido una clave Diffie-Hellman efímera débil en el mensaje de negociación "Intercambio de claves de servidor". (Código de error: ssl_error_weak_server_ephemeral_dh_key).

  • La página que está intentando ver no se puede mostrar porque la autenticidad de los datos recibidos no ha podido ser verificada.
  • Contacte con los propietarios del sitio web para informarles de este problema.

La razón de este problema es que el servidor intenta establecer una conexión segura utilizando una clave de cifrado débil (menos de 1024 bits). El tamaño recomendado de la clave de cifrado es de 2048 bits. La forma más fácil de generar este tipo de clave de cifrado mejorada es utilizar OpenSSL:

Openssl dhparam -out dhparams.pem 2048

Para resolver el problema con diferentes servidores, debe seguir los pasos siguientes:

1.Especificar conjuntos de cifrado seguros

2.Definir los parámetros adecuados para el algoritmo Diffie-Hellman

Solución para Apache

Los parámetros SSL se pueden definir de forma global en el archivo httpd.conf o en hosts virtuales específicos.

Conjuntos de cifrado

Desactivar el soporte de SSLv2 y SSLv3 y activar el soporte de TLS permitiendo / deshabitando de forma explícita determinados cifrados en el orden especificado:

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder   on

Parámetros Diffie-Hellman:

En las versiones recientes de Apache (2.4.8 y superior), así como de OpenSSL 1.0.2 y posterior, puede especificar directamente un archivo con los parámetros Diffie-Hellman:

SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"

Si utiliza Apache con LibreSSL o trabaja con versiones de Apache 2.4.7 u OpenSSL 0.9.8a o posteriores, puede añadir los parámetros Diffie-Hellman generados anteriormente al final del archivo de su certificado.

Restablecer la configuración:

Sudo service apache2 reload

Solución para Nginx

En el bloque del servidor en la configuración del sitio (/etc/nginx/sites-enabled/default), agregue lo siguiente:

Conjuntos de cifrado:

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_prefer_server_ciphers on;

Parámetros Diffie-Hellman

Ssl_dhparam {path to dhparams.pem}

Volver a cargar la configuración:

Sudo nginx -s reload

Microsoft IIS

1. Abra el editor de objetos de directiva de grupo (ejecute gpedit.msc en la línea de comando).

2. Vaya a Configuración del equipo, Plantillas administrativas, Red, y haga clic en Ajustes de configuración SSL.

3. En la sección de Ajustes de configuración SSL, abra el parámetro Prioridad de suite de cifrado SSL

4. Configure cifrados estables. La lista de cifrados puede consultarse en el sitio web de Microsoft o en la página de Mozilla.

Lighttpd

Los cambios se realizan en /etc/lighttpd/lighttpd.conf.

Conjuntos de cifrado:

ssl.cipher-list = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA "

Parámetros Diffie-Hellman

Ssl.dh-file = "{path to dhparams.pem}"

Restablecer la configuración:

Sudo service lighttpd restart

Apache Tomcat

En el archivo server.xml (para JSSE)

Conjuntos de cifrado:

<Connector

ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA"

/>

Nota: Para utilizar cifrados AES de 256 bits, debe instalar archivos de política de jurisdicción de fuerza ilimitada de JCE. Puede encontrarlos en el siguiente enlace.

Postfix SMTP

Ambos parámetros deben especificarse en /etc/postfix/main.cf.

Conjuntos de cifrado:

smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA

Parámetros Diffie-Hellman

smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem

Restablecer la configuración:

sudo postfix reload

Sendmail

Se pueden realizar cambios en la sección LOCAL_CONFIG del archivo /etc/mail/sendmail.mc.

Conjuntos de cifrado:

O CipherList=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Parámetros Diffie-Hellman

O DHParameters={path to dhparams.pem}

Restablecer la configuración:

sudo service sendmail restart

Dovecot

Se pueden realizar cambios en /etc/dovecot.conf.

Conjuntos de cifrado:

ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

ssl_prefer_server_ciphers = yes (Dovecot 2.2.6 o superior)

Parámetros Diffie-Hellman:

#regenerates every week

ssl_dh_parameters_length = 2048

Restablecer la configuración:

sudo doveadm reload

HAProxy

Los cambios se realizan en la sección global de la configuración.

Conjuntos de cifrado:

ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Parámetros Diffie-Hellman:

Añadir al final del archivo .crt file con el parámetro Diffie-Hellman generado con OpenSSL.

Nota: a pesar de la opción tune.ssl.default-dh-param, que le permite especificar el tamaño máximo de los números primos utilizados para DHE, colocar parámetros arbitrarios en el archivo de su certificado sobrescribirá estos valores.

Restablecer la configuración:

sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)

Amazon Elastic Load Balancing

El último conjunto de parámetros SSL predefinidos (2015-05) utiliza cifrados ECDHE, no DHE, que son resistentes a los ataques LogJam. Puede consultarse información detallada en la documentación.

OpenSSH

El protocolo SSH está protegido contra los ataques LogJam, en los que los atacantes pueden cambiar una conexión a una criptografía más débil. Sin embargo, muchas implementaciones de SSH, incluidas las OpenSSH, utilizan números primos; por ejemplo, el Grupo 2 de Oakley de 1024 bits. No obstante, existen varias maneras de resolver este problema. El primer método, y el más sencillo, es hacer que los clientes utilicen el algoritmo Diffie-Hellman en curvas elípticas. En particular, Curve25519. Esto puede realizarse configurando algoritmos de intercambio de claves:

KexAlgorithms curve25519-sha256@libssh.org

Si desea continuar el soporte del algoritmo Diffie-Hellman no elíptico, debe desactivar el soporte del Grupo 1 eliminando diffie-hellman-group1-sha1. Puede dejar diffie-hellman-group14-sha1, que utiliza números primos de 2038 bits.

También puede generar nuevos grupos Diffie-Hellman:

ssh-keygen -G moduli-2048.candidates -b 2048

ssh-keygen -T moduli-2048 -f moduli-2048.candidates

Entonces deberá instalar moduli-2048 en el archivo de módulos de su sistema. En Debian / Ubuntu, se encuentra en /etc/ssh/moduli. SSH selecciona (de manera aleatoria) los grupos de este archivo, por lo que usted debe añadir los nuevos grupos generados al archivo de módulos y eliminar los antiguos.

Si tiene alguna pregunta o inquietud, no dude en ponerse en contacto con el equipo de asistencia de LeaderTelecom utilizando la información de contacto proporcionada en el sitio web.


¿Está listo para probarlo?


¡Sí! ¡Lo quiero gratis!

¿Tiene dudas?
Llámenos al +31 20 7640722