Verne academy

VERNE ACADEMY > BLOG > ARTíCULOS SOBRE DATA > ¿POR QUé TUS APLICACIONES RECIBEN ERRORES DE CONEXIóN TLS TRAS MIGRAR A UN NUEVO SERVIDOR WINDOWS CON SQL?

¿Por qué tus aplicaciones reciben errores de conexión TLS tras migrar a un nuevo servidor Windows con SQL?

Contenidos del Post

Si como yo, has migrado una instancia de una versión antigua de SQL Server a una nueva, asegurándote de que la configuración TLS sea la misma en ambos casos, y a pesar de eso, tus aplicaciones no pueden conectarse al servidor, este artículo puede ahorrarte horas de búsqueda.

EL CASO: Errores de conexión TLS tras migrar a un nuevo servidor Windows con SQL

Debemos migrar una instancia SQL Server en una versión fuera de soporte o cercana a hacerlo a un nuevo servidor con SQL Server 2019 o 2022. El nuevo servidor dispone de una versión de Windows acorde a la versión instalada de SQL.
Por su parte, las aplicaciones del cliente están en alguna de estas versiones de Windows:

  • Windows Server 2016 sin los parches KB 4537806 y KB 4540670 aplicados (versión 1607 o anterior).
  • Windows 10, versión 1507
  • Windows 8.1
  • Windows 7
  • Windows Server 2012 R2 o anteriores

 

La configuración TLS en los clientes y el servidor es idéntica y, sin embargo, tras la migración, los clientes reciben mensajes de tipo:

Errores conexión TLS

LA CAUSA: Errores de conexión TLS tras migrar a un nuevo servidor Windows con SQL

El “culpable”, tal y como apuntan los mensajes de error, es el protocolo TLS. Se trata de un protocolo de cifrado que permite a dos partes identificarse, autenticarse entre sí y comunicarse con confidencialidad e integridad de datos.

Durante la autenticación de cliente y servidor, hay un paso que requiere que los datos se cifren con una clave asimétrica y que se descifren con la otra clave del par. Las claves deben calcularse de la misma forma en el cliente y en el servidor, ya que si no son idénticas, la conexión no funcionará.

Las nuevas versiones Windows incluyen una versión parcheada del algoritmo de cálculo de las claves TLS (Diffie–Hellman key Exchange), que incluye en el cálculo los ceros situados a la izquierda de la MAC, lo que no se puede hacer en versiones antiguas de este sistema operativo, en las que se ignoran esos valores.

Cuando dos servidores con versiones distintas del algoritmo de cálculo, intentan comunicarse, generan claves distintas y se produce el error.

LA SOLUCIÓN DEFINITIVA: Errores de conexión TLS tras migrar a un nuevo servidor Windows con SQL

La solución definitiva es actualizar los servidores de aplicaciones a versiones Windows más modernas que calculen correctamente la clave:

  • Windows Server 2016, versión 1607 y posteriores.
  • Windows Server 2019 RTM y posteriores.
  • Windows 10, versión 1511 y posteriores.

 

No obstante, cuando esto no es posible (por cualquier motivo), debemos buscar una alternativa.

UNA ALTERNATIVA ACEPTABLE: Errores e conexión TLS tras migrar a un nuevo servidor Windows con SQL

Si las versiones antiguas de Windows ignoran los ceros a la izquierda al calcular la clave TLS, hagamos que las nuevas versiones los ignoren también. Para ello es necesario deshabilitar el cifrado TLS_DHE en el nuevo servidor.

Disponemos de dos métodos:

A) Usando políticas de grupo

  1.  Abrir gpedit.msc
  2. Computer Configuration -> Administrative Templates -> Network -> SSL Configuration Settings
  3. Deshabilitar SSL Cipher Suite Order setting
Errores y soluciones conexión TLS

B) Usando Powershell

				
					foreach ($CipherSuite in $(Get-TlsCipherSuite).Name)
{
    if ( $CipherSuite.substring(0,7) -eq "TLS_DHE" )
    {
       "Disabling cipher suite: " + $CipherSuite
       Disable-TlsCipherSuite -Name $CipherSuite
    }
    else
    {
        "Existing enabled cipher suite will remain enabled: " + $CipherSuite
    }
} 
 

				
			

Debido a la distribución de la cardinalidad del campo SupplierID, se observa un comportamiento dispar en función del valor del parámetro que se le pasa al procedimiento almacenado. Veámoslo:

Conclusiones

Como acabamos de comprobar, a la hora de migrar instancias a nuevos servidores, no sólo debemos tener en cuenta las peculiaridades de la instancia SQL Server, sino que la versión del sistema operativo influye de forma muy directa en cómo se accede a la misma.

El uso del protocolo TLS en comunicaciones con SQL Server es esencial para garantizar la privacidad, integridad y autenticidad de los datos transmitidos. Para evitar la posibilidad de un ataque o una vulnerabilidad, debe mantenerse actualizado en lo posible, lo que puede generar inconvenientes como los indicados en este artículo.

Cursos de SQL Server

Tengas el nivel que tengas, ¡tenemos un curso de SQL para ti! Desde un nivel básico, pasando por el intermedio y llegando al avanzado, hasta aprender planes de ejecución y a auditar tus propias consultas.

Soluciones y servicios de SQL Server

En Verne Tech podemos ayudarte. Habla con uno de nuestros técnicos y cuéntanos las necesidades de tu empresa.
Facebook
Twitter
LinkedIn
Pablo Zamora del Corral
Pablo Zamora del Corral
Data & Cloud Architect
Deja una respuesta

Artículos Recomendados

¿Buscas formación para

ti o para tu empresa?

Desarrolla tu talento o el de tu equipo con formaciones prácticas impartidas por expertos de la industria. Tú eliges la modalidad: formación privada, clases públicas online en directo o cursos on-demand (formación en video). Durante los cursos trabajamos sobre casos reales y soluciones aplicadas en proyectos, basadas en nuestros años de experiencia. ¿Hablamos? 😉

Carrito0
Aún no agregaste productos.
Seguir viendo
0