Compartir a través de


Cifrado y validación de certificados en OLE DB

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Descargar controlador OLE DB

SQL Server cifra siempre los paquetes de red asociados al inicio de sesión. Si no se ha aprovisionado ningún certificado en el servidor al iniciarlo, SQL Server genera un certificado autofirmado, que se usa para cifrar los paquetes de inicio de sesión.

Los certificados autofirmados no garantizan la seguridad. El protocolo de enlace cifrado se basa en NT LAN Manager (NTLM). Se recomienda encarecidamente aprovisionar un certificado comprobable en SQL Server para la conectividad segura. La seguridad de la capa de transporte (TLS) solo se puede proteger con la validación de certificados.

Las aplicaciones pueden solicitar también el cifrado de todo el tráfico de red mediante palabras clave de cadenas de conexión o propiedades de conexión. Las palabras clave son "Encrypt" para OLE DB cuando se usa una cadena de proveedor con IDbInitialize::Initialize , o bien "Use Encryption for Data" para ADO y OLE DB cuando se usa una cadena de inicialización con IDataInitialize . El cifrado también se puede configurar en el equipo cliente en el Registro mediante la opción Forzar cifrado de protocolo. Para más información, consulte la sección Configuración del Registro. De forma predeterminada, para el cifrado de todo el tráfico de red de una conexión es necesario aprovisionar un certificado en el servidor. Al configurar el cliente para que confíe en el certificado del servidor, podría ser vulnerable a ataques de tipo "Man in the middle". Si implementa un certificado comprobable en el servidor, asegúrese de cambiar a FALSE la configuración de cliente sobre la confianza en el certificado.

Para obtener información sobre las palabras clave de cadena de conexión, consulte Uso de palabras clave de cadena de conexión con el controlador OLE DB para SQL Server.

Para permitir usar el cifrado cuando no se ha aprovisionado un certificado en el servidor, se puede establecer la configuración del Registro de cliente de Force Protocol Encryption y Trust Server Certificate. En ese caso, el cifrado utiliza un certificado de servidor autofirmado sin validación si no se ha proporcionado ningún certificado comprobable en el servidor.

Cifrado y comportamiento de la validación de certificados

La configuración de las aplicaciones nunca reduce el nivel de seguridad establecido en el registro, pero sí puede reforzarlo. Para más información, consulte la sección Configuración del Registro. Por ejemplo, si Force Protocol Encryption no está establecido para el cliente, una aplicación puede solicitar su propio cifrado. Para garantizar el cifrado incluso cuando no se ha aprovisionado un certificado de servidor, la aplicación puede solicitar el cifrado y habilitar TrustServerCertificate. Pero si en la configuración cliente no está habilitado TrustServerCertificate, seguirá siendo necesario un certificado de servidor.

La versión 19 de OLE DB Driver for SQL Server presenta cambios importantes en las API relacionadas con el cifrado. Para más información, consulte Cambios en las propiedades de cifrado.

Versión principal 19

En la tabla siguiente se describe la evaluación de la configuración de cifrado:

Cliente configurado con Forzar cifrado de protocolo Cadena/atributo de conexión Encrypt/Use Encryption for Data Cifrado resultante
0 No/Opcional Opcionales
0 Sí/Obligatorio (predeterminado) Mandatory
0 Strict Strict
1 No/Opcional Mandatory
1 Sí/Obligatorio (predeterminado) Mandatory
1 Strict Strict
2 Omitido Strict

En la tabla siguiente se describen el cifrado y la validación resultantes:

Cifrado Cliente configurado con Confiar en certificado de servidor Cadena/atributo de conexión Trust Server Certificate Resultado
Opcionales N/D N/D El cifrado solo se produce para los paquetes LOGIN.
Mandatory 0 Omitido El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
Mandatory 1 No (valor predeterminado) El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
Mandatory 1 El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
Strict N/D N/D El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.

Precaución

En la tabla anterior solo se proporciona una guía sobre el comportamiento del sistema en distintas configuraciones. Para una conectividad segura, asegúrese de que el cliente y el servidor requieren cifrado (para la configuración del lado servidor, consulte Configuración de las opciones de cifrado en SQL Server). Asegúrese también de que el servidor tiene un certificado comprobable y de que el valor TrustServerCertificate en el cliente se establece en FALSE.

Nota

A partir de la versión 19.2 del controlador OLE DB, las conexiones TDS 8.0 se pueden configurar para usar TLS 1.3. Para más información, consulte Soporte técnico de TLS 1.3.

Versión principal 18 con nuevos métodos de autenticación

Para las versiones 18.x.x, para mejorar la seguridad, cuando se usan las nuevas palabras clave de cadena de conexión Authentication o Access Token (o sus propiedades correspondientes), el controlador invalida el valor de cifrado predeterminado al establecerlo en .yes La invalidación se produce a la hora de inicialización del objeto de origen de datos. Si el cifrado se establece antes de la inicialización por cualquier medio, el valor se respeta y no se reemplaza.

Nota:

En las aplicaciones ADO y en las aplicaciones que obtienen la interfaz IDBInitialize a través de IDataInitialize::GetDataSource, el componente principal que implementa la interfaz establece explícitamente el cifrado en su valor predeterminado de no. Por consiguiente, las nuevas propiedades o palabras clave de autenticación respetan esta configuración y el valor de cifrado no se reemplaza. Por lo tanto, se recomienda que estas aplicaciones establezcan explícitamente Use Encryption for Data=true para reemplazar el valor predeterminado.

Para mejorar la seguridad, los nuevos métodos de autenticación respetan el valor de TrustServerCertificate (y sus correspondientes palabras clave y propiedades de cadena de conexión) independientemente de la configuración de cifrado de cliente. En consecuencia, se valida el certificado de servidor de forma predeterminada. El controlador determina si se va a validar el certificado de servidor de la manera siguiente:

Cliente configurado con Confiar en certificado de servidor Cadena/atributo de conexión Trust Server Certificate Validación de certificados
0 No (valor predeterminado)
0
1 No (valor predeterminado)
1 No

En la tabla siguiente se describe la evaluación de la configuración de cifrado:

Cliente configurado con Forzar cifrado de protocolo Cadena/atributo de conexión Encrypt/Use Encryption for Data Cifrado resultante
0 No (valor predeterminado) No
0
1 No (valor predeterminado)
1

En la tabla siguiente se describen el cifrado y la validación resultantes:

Cifrado resultante Validación de certificados Resultado
No No El cifrado solo se produce para los paquetes LOGIN.
No El cifrado solamente se produce en los paquetes LOGIN si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
No El cifrado de todo el tráfico se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
El cifrado de todo el tráfico de red solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.

Versión principal 18 con métodos de autenticación heredados

En la tabla siguiente se describe el resultado del cifrado y la validación de los métodos de autenticación heredados:

Cliente configurado con Forzar cifrado de protocolo Cliente configurado con Confiar en certificado de servidor Cadena/atributo de conexión Encrypt/Use Encryption for Data Cadena/atributo de conexión Trust Server Certificate Resultado
0 N/D No (valor predeterminado) N/D El cifrado solo se produce para los paquetes LOGIN.
0 N/D No (valor predeterminado) El cifrado de todo el tráfico de red solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
0 N/D El cifrado de todo el tráfico se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
1 0 Omitido Omitido El cifrado de todo el tráfico de red solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
1 1 No (valor predeterminado) N/D El cifrado de todo el tráfico se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
1 1 No (valor predeterminado) El cifrado de todo el tráfico de red solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
1 1 El cifrado de todo el tráfico se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.

Vea también

Controlador OLE DB para las características de SQL Server
Propiedades de inicialización y autorización
Palabras clave de cadena de conexión
Diferencias de la versión principal
Parámetros del Registro