Habilitación de conexiones cifradas en el Motor de base de datos

Se aplica a: síSQL Server (todas las versiones admitidas)

Obtenga información sobre cómo cifrar datos a través de canales de comunicación. Puede habilitar conexiones cifradas para una instancia de Motor de base de datos de SQL Server y usar el Administrador de configuración de SQL Server para especificar un certificado.

El equipo de servidor debe tener un certificado aprovisionado. Para aprovisionar el certificado en el equipo de servidor, debe importarlo en Windows. El equipo cliente se debe configurar para que confíe en la entidad de certificación raíz del certificado.

Importante

A partir de SQL Server 2016 (13.x), ya no se incluye Capa de sockets seguros (SSL). En su lugar use Seguridad de la capa de transporte (TLS).

Seguridad de la capa de transporte (TLS)

SQL Server puede usar Seguridad de la capa de transporte (TLS) para cifrar los datos transmitidos a través de una red entre una instancia de SQL Server y una aplicación cliente. El cifrado TLS se realiza en la capa del protocolo y está disponible para todos los clientes SQL Server admitidos.

Se puede usar TLS para la validación del servidor cuando una conexión cliente solicita cifrado. Si la instancia de SQL Server se ejecuta en un equipo al que se ha asignado un certificado emitido por una entidad de certificación pública, la identidad del equipo y de la instancia de SQL Server se certifica mediante la cadena de certificados que conducen a la entidad emisora raíz de confianza. Esta validación de servidor requiere que el equipo en el que se ejecuta la aplicación cliente se configure para confiar en la entidad emisora raíz del certificado que utiliza el servidor.

En la sección siguiente se describe cómo se puede realizar el cifrado con un certificado autofirmado, aunque este tipo de certificado solo ofrece protección limitada. El nivel de cifrado que se usa en TLS, de 40 o 128 bits, depende de la versión del sistema operativo Microsoft Windows que se ejecute en los equipos de la aplicación y de la base de datos.

Advertencia

El uso del nivel de cifrado de 40 bits se considera no seguro.

Advertencia

Las conexiones TLS cifradas mediante un certificado autofirmado no proporcionan una gran seguridad. Son susceptibles de sufrir ataques de tipo "Man in the middle". No debe confiar en TLS con certificados autofirmados en un entorno de producción ni en servidores conectados a Internet.

Al habilitar el cifrado TLS aumenta la seguridad de los datos que se transmiten a través de redes entre instancias de SQL Server y las aplicaciones. Pero cuando todo el tráfico entre SQL Server y una aplicación cliente se cifra mediante TLS, es necesario el procesamiento adicional siguiente:

  • Se requiere un ciclo adicional de ida y vuelta de red en el momento de la conexión.
  • Los paquetes enviados desde la aplicación a la instancia de SQL Server los debe cifrar la pila TLS de cliente y los debe descifrar la pila TLS de servidor.
  • Los paquetes enviados desde la aplicación a la instancia de SQL Server los debe cifrar la pila TLS de servidor y los debe descifrar la pila TLS de cliente.

Acerca de los certificados

El certificado debe estar emitido para la Autenticación de servidor. El nombre del certificado debe ser el nombre de dominio completo (FQDN) del equipo.

Los certificados se almacenan localmente para los usuarios del equipo. Para instalar un certificado para usarlo con SQL Server, debe ejecutar el Administrador de configuración de SQL Server con una cuenta que tenga privilegios de administrador local.

El cliente debe ser capaz de comprobar la propiedad del certificado utilizado por el servidor. Si el cliente tiene el certificado de clave pública de la entidad de certificación que firmó el certificado del servidor, no es necesario realizar una mayor configuración. Microsoft Windows incluye los certificados de clave pública de muchas entidades de certificación. Si el certificado del servidor lo firmó una entidad de certificación pública o privada para la que el cliente no tiene certificado de clave pública, debe instalar el certificado de clave pública de esta entidad de certificación.

Nota

Si desea utilizar el cifrado con un clúster de conmutación por error, debe instalar el certificado del servidor con el nombre DNS completo del servidor virtual en todos los nodos del clúster de conmutación por error. Por ejemplo, si tiene un clúster con dos nodos cuyos nombres son test1.*<your company>*.com y _test2._<your company>*.com*, y un servidor virtual denominado virtsql*_, debe instalar un certificado para _ _virtsql._<your company>*.com en ambos nodos. Puede establecer el valor de la opción ForceEncryption en el cuadro de propiedades Protocolos para virtsql de Configuración de red de SQL Server en .

Nota

Al crear conexiones cifradas para un indexador de Azure Search en SQL Server en una máquina virtual de Azure, vea Configuración de una conexión desde un indexador de Azure Search a SQL Server en una máquina virtual de Azure.

Requisitos de certificados

Para que SQL Server cargue un certificado TLS, el certificado debe cumplir las condiciones siguientes:

  • El certificado debe estar en un almacén de certificados del equipo local o en el almacén de certificados del usuario actual.

  • La cuenta de servicio de SQL Server debe tener el permiso necesario para acceder al certificado TLS.

  • La hora actual del sistema debe ser posterior al valor de la propiedad Válido desde del certificado y anterior a la propiedad Válido hasta del certificado.

Nota

La validez del certificado se evalúa al conectarse a SQL Server con las conexiones de cliente que se inician especificando la opción de cifrado como verdadera, a menos que la configuración del Certificado de servidor de confianza lo invalide.

  • El certificado debe estar destinado a la autenticación del servidor. Para esto es necesario que la propiedad Uso mejorado de clave del certificado para especificar Autenticación del servidor (1.3.6.1.5.5.7.3.1) .

  • El certificado se debe crear mediante la opción KeySpec de AT_KEYEXCHANGE. Esto requiere un certificado heredado. Por lo general, la propiedad de uso de clave del certificado (KEY_USAGE) incluye también el cifrado de clave (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • La propiedad Asunto del certificado debe indicar que el nombre común (CN) es el mismo que el nombre del host o nombre de dominio completo (FQDN) del servidor. Si se usa el nombre de host, se debe especificar el sufijo DNS en el certificado. Si SQL Server se ejecuta en un clúster de conmutación por error, el nombre común debe coincidir con el del host o FQDN del servidor virtual, y los certificados se deben aprovisionar en todos los nodos del clúster de conmutación por error.

  • SQL Server 2008 R2 y SQL Server 2008 R2 Native Client (SNAC) admiten los certificados comodín. SNAC ha quedado en desuso y se ha reemplazado por Microsoft OLE DB Driver for SQL Server y Microsoft ODBC Driver for SQL Server. Es posible que otros clientes no admitan los certificados comodín.
    El certificado comodín no se puede seleccionar con el Administrador de configuración de SQL Server. Para usar un certificado comodín, debe editar la clave del Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib y escribir la huella digital del certificado, sin espacios en blanco, en el valor Certificado.

    Advertencia

    Una modificación incorrecta del Registro puede provocar daños graves en el sistema. Antes de efectuar cambios en el Registro, es recomendable que realice una copia de seguridad de los datos importantes del equipo.

Instalación en un solo servidor

Con SQL Server 2019 (15.x), la administración de certificados se integra en el Administrador de configuración de SQL Server. Administrador de configuración de SQL Server para SQL Server 2019 (15.x) se puede usar con versiones anteriores de SQL Server. Vea Administración de certificados (Administrador de configuración de SQL Server) para agregar un certificado a una única instancia de SQL Server.

Si usa SQL Server 2012 (11.x) a través de SQL Server 2017 (14.x), y Administrador de configuración de SQL Server para SQL Server 2019 (15.x) no está disponible, siga estos pasos:

  1. En el menú Inicio , haga clic en Ejecutar; en el cuadro Abrir , escriba MMC y haga clic en Aceptar.

  2. En el menú Archivo de la consola MMC, haga clic en Agregar o quitar complemento.

  3. En el cuadro de diálogo Agregar o quitar complemento , haga clic en Agregar.

  4. En el cuadro de diálogo Agregar un complemento independiente , haga clic en Certificados y, después, en Agregar.

  5. En el cuadro de diálogo Complemento de certificados , haga clic en Cuenta de equipo y, después, en Finalizar.

  6. En el cuadro de diálogo Agregar un complemento independiente , haga clic en Cerrar.

  7. En el cuadro de diálogo Agregar o quitar complemento , haga clic en Aceptar.

  8. En el complemento Certificados , expanda Certificados, expanda Personal. Tras ello, haga clic con el botón derecho en Certificados, seleccione Todas las tareas y, finalmente, haga clic en Importar.

  9. Haga clic con el botón derecho en el certificado importado, seleccione Todas las tareas y, luego, haga clic en Administrar claves privadas. En el cuadro de diálogo Seguridad, agregue el permiso de lectura para la cuenta de usuario que usa la cuenta de servicio de SQL Server.

  10. Finalice el Asistente para importación de certificados para agregar un certificado al equipo y cierre la consola MMC. Para obtener más información acerca de cómo agregar un certificado a un equipo, vea la documentación de Windows.

Importante

En los entornos de producción, se recomienda obtener un certificado de confianza emitido por una entidad de certificación.
Con fines de prueba, también se puede usar un certificado autofirmado. Para crear un certificado autofirmado, consulte Powershell Cmdlet New-SelfSignedCertificate o certreq command.

Instalación en varios servidores

Con SQL Server 2019 (15.x), la administración de certificados se integra en el Administrador de configuración de SQL Server. Administrador de configuración de SQL Server para SQL Server 2019 (15.x) se puede usar con versiones anteriores de SQL Server. Consulte Administración de certificados (Administrador de configuración de SQL Server) para agregar un certificado en una configuración de clúster de conmutación por error o de grupo de disponibilidad.

Si usa SQL Server 2012 (11.x) a través de SQL Server 2017 (14.x), y Administrador de configuración de SQL Server para no está disponible para SQL Server 2019 (15.x), siga los pasos de la sección Para aprovisionar (instalar) un certificado en un solo servidor para cada servidor.

Exportación del certificado de servidor

  1. En el complemento Certificados , busque el certificado en la carpeta Certificados / Personal , haga clic con el botón derecho en Certificado, seleccione Todas las tareas y, luego, haga clic en Exportar.

  2. Complete el Asistente para exportación de certificados y guarde el archivo del certificado en una ubicación adecuada.

Configuración del servidor

Configure el servidor para forzar conexiones cifradas.

Importante

La cuenta de servicio de SQL Server debe tener permisos de lectura en el certificado que se usa para forzar el cifrado en la instancia de SQL Server. En el caso de una cuenta de servicio sin privilegios, será necesario agregar permisos de lectura al certificado. Si no lo hace, se puede producir un error en el reinicio del servicio SQL Server.

  1. En el Administrador de configuración de SQL Server, expanda Configuración de red de SQL Server, haga clic con el botón derecho en Protocolos de <server instance> y, después, seleccione Propiedades.

  2. En el cuadro de diálogo Propiedades de Protocolos de <instance name> , en la pestaña Certificado, seleccione el certificado que quiera en el cuadro desplegable Certificado y haga clic en Aceptar.

  3. En la pestaña Marcas , en el cuadro ForceEncryption , seleccione y, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo.

  4. Reinicie el servicio SQL Server .

Nota

Para garantizar que la conectividad entre el cliente y el servidor es segura, configure el cliente para que solicite conexiones cifradas. Se explican más detalles más adelante en este artículo.

Configuración del cliente

Configure el cliente para que solicite conexiones cifradas.

  1. Copie el certificado original o el archivo del certificado exportado en el equipo cliente.

  2. En el equipo cliente, use el complemento Certificados para instalar el certificado raíz o el archivo del certificado exportado.

  3. En el Administrador de configuración de SQL Server, haga clic con el botón derecho en Configuración de SQL Server Native Client y, después, haga clic en Propiedades.

  4. En la página Marcas , en el cuadro Forzar cifrado de protocolo , haga clic en .

Usar SQL Server Management Studio

Para cifrar una conexión desde SQL Server Management Studio:

  1. En la barra de herramientas del Explorador de objetos, haga clic en Conectar y, a continuación, en Motor de base de datos.

  2. En el cuadro de diálogo Conectar al servidor , rellene la información de conexión y, a continuación, haga clic en Opciones.

  3. En la pestaña Propiedades de conexión , haga clic en Cifrar conexión.

Protocolo de seguridad de Internet (IPSec)

Los datos de SQL Server se pueden cifrar durante la transmisión mediante IPSec. Los sistemas operativos del cliente y del servidor proporcionan IPSec, que no requiere configuración de SQL Server. Para obtener más información acerca de IPSec, vea la documentación de Windows o de la red.

Pasos siguientes