Error "La cadena de certificados fue emitida por una autoridad que no es de confianza" después de actualizar las aplicaciones SNAC

Resumen

Este artículo le ayuda a solucionar los errores de confianza de la cadena de certificados que se producen al actualizar aplicaciones de base de datos de SQL Server Native Client 11.0 (SNAC) a Microsoft OLE DB Driver 19 o Microsoft ODBC Driver 18 for SQL Server.

Al actualizar de SNAC 11.0 a controladores más recientes, es posible que las aplicaciones no puedan conectarse a SQL Server con errores de confianza de la cadena de certificados. Este problema se produce porque los controladores más recientes habilitan el cifrado de forma predeterminada y requieren validación de certificados, mientras que SNAC lo deshabilitó de forma predeterminada. Para corregir el error, aprovisione un certificado en el que confía el cliente o ajuste la Encryptconfiguración de conexión , Use Encryption for Datao TrustServerCertificate tal como se describe en este artículo.

Qué palabra clave de cifrado se aplica al controlador y al cliente

La palabra clave que controla el cifrado depende del controlador y de cómo la aplicación compila su cadena de conexión. Si usa una palabra clave que el controlador no reconoce, se produce un error de conexión con un error de "palabra clave no compatible" en lugar del error de certificado.

Controlador y método de conexión Palabra clave de cifrado Palabra clave de confianza en certificados
OLE DB Driver 19, cadena de proveedor (IDBInitialize::Initialize) Encrypt TrustServerCertificate=yes o no
OLE DB Driver 19, ADO o cadena de inicialización (IDataInitialize) Use Encryption for Data Trust Server Certificate=true o false
Controlador ODBC 18, cadena de conexión o DSN Encrypt TrustServerCertificate=yes o no
  • Controlador OLE DB 19: Acepta Optional, Mandatory (valor predeterminado) y Strict. Para mantener la compatibilidad con versiones anteriores, también acepta los valores de la versión 18, donde no y false se asignan a Optional, y yes y true se asignan a Mandatory.
  • Controlador ODBC 18: Acepta /optionalno (el valor predeterminado), strictyes/ y mandatory.
  • Cadenas de proveedor: Use TrustServerCertificate=yes o TrustServerCertificate=no.
  • Cadenas de inicialización y ADO: Use Trust Server Certificate=true o Trust Server Certificate=false.
  • Modo estricto: Valida siempre el certificado de servidor y omite la configuración de confianza del certificado.

El uso de TrustServerCertificate=true en una cadena del proveedor puede provocar un error de valor no válido.

Para obtener las listas completas de palabras clave, consulte Uso de palabras clave de cadena de conexión con OLE DB Driver for SQL Server, Diferencias entre las versiones principales en MSOLEDBSQL y Palabras clave y atributos de DSN y de cadena de conexión.

Error en la cadena de certificados: causas y soluciones para OLE DB Driver 19 y ODBC Driver 18

Seleccione la pestaña del controlador que ha actualizado. Cada pestaña muestra el mensaje de error que ve, por qué se produce y las soluciones en orden recomendado.

Después de actualizar de SQL Server Native Client 11.0 (Provider=SQLNCLI11) a Microsoft OLE DB Driver 19 for SQL Server, es posible que se produzca un error en los intentos de conexión con el siguiente mensaje de error:

[Microsoft OLE DB Driver 19 for SQL Server]: El cliente no puede establecer la conexión

[Microsoft OLE DB Driver 19 for SQL Server]: Proveedor SSL: la cadena de certificados fue emitida por una autoridad que no es de confianza.

Causa del error de confianza de la cadena de certificados al actualizar a Microsoft OLE DB Driver 19

Este error indica que el equipo cliente no puede comprobar la autenticidad del certificado de SQL Server porque fue emitido por una entidad de certificación (CA) en la que el cliente no confía.

Estos errores se producen si se cumplen las dos condiciones siguientes:

  • La configuración Force encryption de la instancia de SQL Server está establecida en No.

  • La cadena de conexión de cliente no especifica explícitamente un valor para la propiedad de cifrado o la opción Cifrado no se estableció ni actualizó explícitamente en el DSN.

El error se produce debido a un cambio en el comportamiento predeterminado de los controladores de cliente. Las versiones anteriores de los controladores de cliente asumen que el cifrado de datos está desactivado de forma predeterminada. Los nuevos controladores asumen que esta configuración está activada de forma predeterminada. Dado que el cifrado de datos es ON, el controlador intenta validar el certificado del servidor y produce un error.

Soluciones para el error de confianza de la cadena de certificados al actualizar a Microsoft OLE DB Driver 19

Aprovisione un certificado TLS en la instancia de SQL Server de una entidad de certificación en la que confía el cliente. Asegúrese de que el servidor suministre los certificados intermedios necesarios para que el cliente pueda construir la cadena hasta una autoridad de certificación raíz de confianza. Este enfoque resuelve el error al mantener habilitado el cifrado y la validación de certificados. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.

Confiar en el certificado de servidor sin validación

Si no puede aprovisionar un certificado verificable inmediatamente, indique al controlador que omita la validación del certificado. La palabra clave que use depende de cómo compila la aplicación el cadena de conexión:

  • En una cadena del proveedor, agregue TrustServerCertificate=yes.
  • En una cadena ADO o de inicialización, agregue Trust Server Certificate=true.

Esta configuración no activa el cifrado por sí mismo. Indica al controlador que omita la validación del certificado cuando la conexión está cifrada, lo que deja vulnerable la conexión a ataques de intermediario. Úselo solo como medida temporal. En Strict el modo de cifrado, el controlador omite esta configuración y siempre valida el certificado.

Nota:

Actualmente, MSOLEDBSQL19 impide la creación de servidores vinculados sin cifrado y un certificado de confianza (no es suficiente un certificado autofirmado). Si necesita servidores vinculados, use la versión compatible existente de MSOLEDBSQL.

Establezca la palabra clave de cifrado en Opcional.

Cambie la configuración de cifrado para que el controlador no requiera un certificado validado. La palabra clave que use depende de cómo compila la aplicación el cadena de conexión:

  • En una cadena del proveedor, configure Encrypt=Optional.
  • En una cadena ADO o de inicialización, establezca Use Encryption for Data=Optional.

El valor predeterminado en OLE DB Driver 19 es Mandatory. Si el cadena de conexión ya especifica Mandatory, yeso true, cambie el valor a Optional. Si el cadena de conexión no especifica un valor, agregue la palabra clave . Este cambio restaura el comportamiento de cifrado de la versión 18 y reduce la seguridad de la conexión.

Para obtener más información, consulte Cifrado y validación de certificados en OLE DB.

Usar OLE DB Driver 18.x como medida temporal

Microsoft OLE DB Driver for SQL Server 18.x no habilita el cifrado de forma predeterminada, por lo que no se ve afectado por este cambio. Trate esta opción como temporal y planee el traslado al controlador OLE DB 19. Puede descargar el controlador desde Notas de la versión de Microsoft OLE DB Driver for SQL Server.