¿Cómo soluciono el error Microsoft.Data.SqlClient.SqlException (0x80131904) y System.ComponentModel.Win32Exception (0x80090331)?

Santiago Obando Morales 0 Puntos de reputación
2025-02-03T18:56:20.59+00:00

Estoy trabajando en una app ASP.NET CORE 8.0. En mi laptop funciona perfectamente, pero a la hora de publicarlo en el servidor IIS, me da un error que detallo a continuación:

Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The client and server cannot communicate, because they do not possess a common algorithm.)

---> System.ComponentModel.Win32Exception (0x80090331): The client and server cannot communicate, because they do not possess a common algorithm.

He leído en varios foros que puede tratarse de la compatibilidad de certificados y que fuerce la app a utilizar TLS 1.2, pero ya lo hace. Asimismo, el servidor IIS también tiene TLS 1.2 activado.
Otra cosa que creo que vale la pena mencionar, es que la misma app cuando migré a .net framework una pequeña parte para probar si así funcionaba, y en efecto funcionó.
¿Qué diferencia puede haber entre .NET Framework y .NET Core que haga que las consultas SQL no funcionen?
En fin, gracias por la ayuda que me puedan proporcionar.

SQL Server
SQL Server
Familia de sistemas de análisis y administración de bases de datos relacionales de Microsoft para soluciones de comercio electrónico, línea de negocio y almacenamiento de datos.
129 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Gao Chen 6,005 Puntos de reputación Proveedor de Microsoft
    2025-02-04T00:17:03.75+00:00

    Hola Santiago Obando Morales,

    ¡Bienvenido(a) a Microsoft Q&A!

    Entiendo, parece que el problema está relacionado con la configuración de SSL/TLS entre tu aplicación ASP.NET Core 8.0 y el servidor SQL. Aquí hay algunas posibles soluciones que podrías intentar:

    Actualizar la cadena de conexión: Asegúrate de que tu cadena de conexión en appsettings.json incluya los parámetros Encrypt=True y TrustServerCertificate=True. Esto puede ayudar a resolver problemas de certificados no confiables

    "ConnectionStrings": {
        "DefaultConnection": "Server=MyServerNameOrHostIP;Database=MyDatabase;User Id=MyUser;Password=MyPassword;Encrypt=True;TrustServerCertificate=True;"
    }
    

    Configura el servidor IIS: Asegúrate de que el servidor IIS esté configurado para soportar las versiones de TLS necesarias. Puedes verificar esto en el registro de Windows bajo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols.

    Configuración de Cifrado en el Registro de Windows: Verifica que los cifrados necesarios estén habilitados en el registro de Windows. Puedes hacerlo navegando a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers y verificando que los cifrados como AES 256 estén habilitados

    Forzar el Uso de TLS 1.2 en el Código: Aunque ya mencionaste que estás usando TLS 1.2, asegúrate de que esté configurado correctamente en tu aplicación. Puedes agregar la siguiente línea en el método Main o en Program.cs:

    System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
    

    Espero que la información brindada fuera útil. Si necesitas más asistencia, estoy a tu disposición.

    Atentamente,

    Gao


    Si esta respuesta resolvió tu consulta, por favor haz clic en 'Aceptar respuesta'. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.


Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.