Share via


Utilizar el cifrado sin validación

SQL Server cifra siempre los paquetes de red asociados al inicio de sesión. Si no se ha proporcionado ningún certificado en el servidor cuando éste se inicia, SQL Server genera un certificado autofirmado que se utiliza para cifrar los paquetes de inicio de sesión.

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 ODBC y OLE DB cuando se utiliza una cadena de proveedor con IDBInitialize::Initialize o "Use Encryption for Data" para ADO y OLE DB cuando se utiliza una cadena de inicialización con IDataInitialize. Esto se puede configurar también en el Administrador de configuración de SQL Server con la opción Forzar cifrado de protocolo. De forma predeterminada, el cifrado de todo el tráfico de red de una conexión requiere que se proporcione un certificado en el servidor.

Para obtener información acerca de las palabras clave de cadenas de conexión, vea Usar palabras clave de cadena de conexión con SQL Server Native Client.

Para permitir utilizar el cifrado cuando no se ha proporcionado un certificado en el servidor, se puede utilizar el Administrador de configuración de SQL Server para establecer las opciones Forzar cifrado de protocolo y Confiar en certificado de servidor. En ese caso, el cifrado utilizará un certificado de servidor autofirmado sin validación si no se ha proporcionado ningún certificado comprobable en el servidor.

Las aplicaciones también pueden utilizar la palabra clave "TrustServerCertificate" o su atributo de conexión asociado para garantizar que se realiza el cifrado. La configuración de las aplicaciones nunca reduce el nivel de seguridad establecido por el Administrador de configuración cliente de SQL Server, pero sí puede reforzarlo. Por ejemplo, si Forzar cifrado de protocolo no está establecido para el cliente, una aplicación puede solicitar su propio cifrado. Para garantizar el cifrado incluso cuando no se ha proporcionado un certificado de servidor, una aplicación puede solicitar el cifrado y "TrustServerCertificate". Sin embargo, si "TrustServerCertificate" no está habilitado en la configuración del cliente, se requiere igualmente un certificado de servidor. En la tabla siguiente se describen todos los casos:

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

No

N/A

No (valor predeterminado)

Omitido

No se produce el cifrado.

No

N/A

No (valor predeterminado)

El cifrado sólo se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.

No

N/A

El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.

No

Omitido

Omitido

El cifrado sólo se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.

No (valor predeterminado)

Omitido

El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.

No (valor predeterminado)

El cifrado sólo se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.

El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.

Proveedor OLE DB de SQL Server Native Client

El proveedor OLE DB de SQL Server Native Client admite el cifrado sin validación mediante la incorporación de la propiedad de inicialización de origen de datos SSPROP_INIT_TRUST_SERVER_CERTIFICATE, que se implementa en el conjunto de propiedades DBPROPSET_SQLSERVERDBINIT. Además, se ha agregado una nueva palabra clave de cadena de conexión, "TrustServerCertificate". Acepta valores sí o no; no es el valor predeterminado. Cuando se utilizan componentes de servicio, acepta valores true o false; false es el valor predeterminado.

Para obtener más información sobre las mejoras realizadas en el conjunto de propiedades DBPROPSET_SQLSERVERDBINIT, vea Propiedades de inicialización y autorización.

Controlador ODBC de SQL Server Native Client

El controlador ODBC de SQL Server Native Client admite el cifrado sin validación mediante la incorporación de las funciones SQLGetConnectAttr y SQLSetConnectAttr. SQL_COPT_SS_TRUST_SERVER_CERTIFICATE se ha agregado para aceptar SQL_TRUST_SERVER_CERTIFICATE_YES o SQL_TRUST_SERVER_CERTIFICATE_NO, siendo SQL_TRUST_SERVER_CERTIFICATE_NO el valor predeterminado. Además, se ha agregado una nueva palabra clave de cadena de conexión, "TrustServerCertificate". Acepta valores sí o no; "no" es el valor predeterminado.