¿Por qué aparece un error de negociación SSL/TLS del cliente cuando intento conectarme a mi equilibrador de carga?

5 minutos de lectura
0

Se muestra un error de negociación entre la capa de sockets seguros (SSL) y la seguridad de la capa de transporte (TLS) cuando intento conectarme a mi equilibrador de carga. ¿Por qué aparece este error?

Breve descripción

Cuando se produce un error de negociación TLS del cliente, significa que una conexión TLS iniciada por el cliente no ha podido establecer una sesión con el equilibrador de carga. Los errores de negociación TLS se producen cuando los clientes intentan conectarse a un equilibrador de carga mediante un protocolo o un cifrado que la política de seguridad del equilibrador de carga no admite. Para establecer una conexión TLS, asegúrese de que su cliente admite lo siguiente:

  • Uno o varios cifrados coincidentes
  • Un protocolo especificado en la política de seguridad

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la AWS CLI.

Identificación de la política de seguridad del equilibrador de carga

En la Consola de administración de AWS:

1.    Abra la consola de Amazon Elastic Compute Cloud (Amazon EC2).

2.    En el panel de navegación, en EQUILIBRIO DE CARGA, seleccione Equilibradores de carga.

3.    Seleccione el equilibrador de carga y, a continuación, elija Agentes de escucha.

4.    Visualice la política de seguridad.
En el caso de los equilibradores de carga de aplicación y de los equilibradores de carga de red, busque la política de seguridad en la columna Política de seguridad.
En el caso de los equilibradores de carga clásicos, seleccione Cambiar en la columna Cifrado para ver la política de seguridad.

En la AWS CLI:

  • En el caso de los equilibradores de carga de aplicación y los equilibradores de carga de red, ejecute el comando describe-listeners.
  • En el caso de los equilibradores de carga clásicos, ejecute el comando describe-load-balancers.

Determinación de los protocolos y los cifrados compatibles con la política de seguridad del equilibrador de carga

Los equilibradores de carga clásicos admiten políticas de seguridad personalizadas. Sin embargo, ni los equilibradores de carga de aplicación ni los equilibradores de carga de red admiten políticas de seguridad personalizadas. Para obtener más información acerca de las políticas de seguridad, incluida la política de seguridad predeterminada, consulte:

(Opcional) Prueba de la política de seguridad del equilibrador de carga

Para probar los protocolos y los cifrados compatibles con la política de seguridad del equilibrador de carga, utilice una herramienta de línea de comandos de código abierto, como sslscan.

Utilización del comando sslscan

Puede instalar y ejecutar el comando sslscan en cualquier instancia de Linux de Amazon EC2 o desde su sistema local. Asegúrese de que el equilibrador de carga que desea probar acepte conexiones TLS desde la dirección IP de origen. Para usar sslscan en una instancia de EC2 de Amazon Linux:

1.    Habilite el repositorio Extra Packages for Enterprise Linux (EPEL).

2.    Ejecute el comando sudo yum install sslscan.

3.    Ejecute el siguiente comando para analizar el equilibrador de carga en busca de los cifrados compatibles. No olvide sustituir example.com por el nombre de su dominio.

[ec2-user@ ~]$ sslscan --show-ciphers example.com

Utilización del comando openssl

Como alternativa, también puede probar la política de seguridad del equilibrador de carga con el comando openssl. Puede ejecutar el comando openssl en cualquier instancia de Linux de Amazon EC2 o desde su sistema local.

Para generar un listado de los cifrados compatibles en el caso de una versión concreta de SSL/TLS, utilice el comando openssl ciphers:

*$* openssl ciphers -v

Por ejemplo, el siguiente comando mostraría los cifrados compatibles con la versión TLSv1.2:

*$* openssl ciphers -V | grep "TLSv1.2"

Utilice el comando s_client para probar los conjuntos de cifrado y las versiones de TLS. Para conocer la solidez de determinados conjuntos de cifrado, puede utilizar un repositorio de sitios web como ciphersuites.info. Por ejemplo, el siguiente comando mostraría los cifrados de www.example.com:

openssl s_client -connect example.com:443

Por ejemplo, el conjunto TLS_PSK_WITH_AES_128_CBC_SHA se considera débil. Si usa el conjunto para un servidor, se mostrará el siguiente error:

openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet
140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:

El conjunto ECDHE-RSA-AES128-GCM-SHA256 se considera fuerte. Si usa el conjunto para el servidor, se mostrará un mensaje de éxito similar al siguiente:

openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD
Session-ID-ctx:
Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1647375807
Timeout : 300 (sec)
Verify return code: 0 (ok)

También puede usar el comando openssl para especificar la versión del protocolo TLS utilizada en la conexión. En el siguiente ejemplo se muestra una prueba que verifica si el servidor admite TLS 1.1:

openssl s_client -connect example.com:443 -tls1_1 -quiet
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2
verify return:1
depth=0 CN = *.peg.a2z.com
verify return:1

Actualización de la política de seguridad del equilibrador de carga si es necesario

Para actualizar la política de seguridad del equilibrador de carga con el fin de utilizar protocolos o cifrados compatibles y lograr el nivel de seguridad deseado, siga estos pasos:


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años