Se estableció una conexión exitosa con el servidor, pero ocurrió un error durante el proceso de inicio de sesión. (Proveedor: Proveedor SSL, Error: 0 - La cadena de certificados fue emitida por una autoridad que no es de confianza)."

        Cuando estaba escribiendo una API .NET6 hoy, usé el marco Dapper para configurar la conexión de la base de datos. Después de la configuración, ocurrió un error al vincular a la base de datos. Descubrí que el error fue causado por Microsoft.Data.SqlClient. Uso del sistema .Data.SqlClient puede  ser un acceso normal, el mensaje de error es el siguiente:

Se estableció correctamente una conexión con el servidor, pero luego se produjo un error durante el proceso de inicio de sesión (proveedor: proveedor SSL, error: 0: la cadena de certificados fue emitida por una autoridad que no es de confianza).

System.Data.SqlClient es un proveedor heredado de .NET Framework que usa ADO.NET.
Lanzado en 2019, el paquete Microsoft.Data.SqlClient es un nuevo paquete compatible con .NET Core y .NET Framework.

Después de consultar la información en Internet, resulta que cuando el paquete Microsoft.Data.SqlClient está conectado a la base de datos, el valor de cifrado predeterminado es True, por lo que verificará el certificado TLS/SSL del servidor, lo que arrojará un error: el la cadena de certificados es emitida por una autoridad no confiable de.

Opcion uno:

De hecho, la solución es muy simple, solo agregue la cadena Encrypt=false; después de la cadena de conexión DB para resolver el problema.

//示例 在DB链接字符串末尾加上 encrypt=false;
"ConnectionStrings": {
    "Default": "Data Source=.;Initial Catalog=AuoUserdata;User Id=sa;Password=sa123;Trusted_Connection=True;Encrypt=false;"
  }

La documentación oficial de Microsoft dice:

El valor predeterminado de la configuración de conexión se ha cambiado de falso a verdadero. Con el uso creciente de bases de datos en la nube y la necesidad de garantizar que esas conexiones sean seguras, es hora de este cambio que rompe la compatibilidad con versiones anteriores.

El valor predeterminado de la configuración de conexión se ha cambiado de falso a verdadero. Con el uso cada vez mayor de bases de datos en la nube y la necesidad de asegurar esas conexiones, ha llegado el momento de este cambio que rompe la compatibilidad con versiones anteriores.

Portal: nueva función de Microsoft.Data.SqlClient 4.0: el valor predeterminado de cifrado es verdadero


Opción II:

Debido a que  la base de datos del enlace Microsoft.Data.SqlClient  verificará el certificado TLS/SSL del servidor de forma predeterminada, solo necesitamos agregar la seguridad automática del servidor de confianza para omitir el certificado de verificación.

//示例 在DB链接字符串末尾加上 trustServerCertificate=true;
"ConnectionStrings": {
    "Default": "Data Source=.;Initial Catalog=AuoUserdata;User Id=sa;Password=sa123;trustServerCertificate=true;"
  }

TrustServerCertificate

True si se debe confiar automáticamente en el certificado de seguridad de la capa de transporte (TLS) del servidor (antes Capa de sockets seguros (SSL)) cuando la capa de comunicación se cifra mediante TLS. De lo contrario  falso .

Observación

Si la propiedad trustServerCertificate se establece en true, se confía automáticamente en el certificado TLS/SSL de SQL Server cuando se utiliza la capa de comunicación cifrada TLS. En otras palabras, el controlador JDBC de Microsoft para SQL Server no validará el certificado TLS/SSL de SQL Server. El valor predeterminado es  falso .

Si la propiedad trustServerCertificate se establece en falso, el controlador JDBC de Microsoft para SQL Server verificará el certificado TLS/SSL del servidor.

Portal: método setTrustServerCertificate

Conclusión:

Elija una de las dos soluciones anteriores para resolver el problema. Si hay algún problema, corríjame. No es fácil de organizar, por favor dale me gusta sígueme , ¡gracias!

referencia:

Ocurrió un error al usar Dapper La cadena de certificados fue emitida por una autoridad que no es de confianza - jianshu.com

La conexión con el servidor se estableció con éxito, pero luego ocurrió un error durante el proceso de inicio de sesión Error de .Net Core WebAPI

Reimpresión, indique la fuente: https://blog.csdn.net/Csongxuan/article/details/130335700

Supongo que te gusta

Origin blog.csdn.net/Csongxuan/article/details/130335700
Recomendado
Clasificación