Habilitar conexiones cifradas en el motor de base de datosEnable Encrypted Connections to the Database Engine

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

En este tema se describe cómo habilitar conexiones cifradas para una instancia de Motor de base de datos de SQL ServerSQL Server Database Engine mediante la especificación de un certificado para el Motor de base de datosDatabase Engine utilizando el Administrador de configuración de SQL ServerSQL Server .This topic describes how to enable encrypted connections for an instance of the Motor de base de datos de SQL ServerSQL Server Database Engine by specifying a certificate for the Motor de base de datosDatabase Engine using SQL ServerSQL Server Configuration Manager. El equipo servidor debe tener un certificado y el equipo cliente debe estar configurado para confiar en la entidad de certificación raíz del certificado.The server computer must have a certificate provisioned, and the client machine must be set up to trust the certificate's root authority. La puesta en servicio es el proceso de instalar un certificado mediante su importación en Windows.Provisioning is the process of installing a certificate by importing it into Windows.

Importante

A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x), ya no se incluye Capa de sockets seguros (SSL).Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), Secure Sockets Layer (SSL) has been discontinued. En su lugar use Seguridad de la capa de transporte (TLS).Use Transport Layer Security (TLS) instead.

Seguridad de la capa de transporte (TLS)Transport Layer Security (TLS)

SQL ServerSQL 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 ServerSQL Server y una aplicación cliente.can use Transport Layer Security (TLS) to encrypt data that is transmitted across a network between an instance of SQL ServerSQL Server and a client application. El cifrado TLS se realiza en la capa del protocolo y está disponible para todos los clientes SQL ServerSQL Server admitidos.The TLS encryption is performed within the protocol layer and is available to all supported SQL ServerSQL Server clients. Se puede usar TLS para la validación del servidor cuando una conexión cliente solicita cifrado.TLS can be used for server validation when a client connection requests encryption. Si la instancia de SQL ServerSQL 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 ServerSQL Server se certifica mediante la cadena de certificados que conducen a la entidad emisora raíz de confianza.If the instance of SQL ServerSQL Server is running on a computer that has been assigned a certificate from a public certification authority, identity of the computer and the instance of SQL ServerSQL Server is vouched for by the chain of certificates that lead to the trusted root authority. 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 usa el servidor.Such server validation requires that the computer on which the client application is running be configured to trust the root authority of the certificate that is used by the server. Se permite el cifrado con un certificado autofirmado y se describe en la sección siguiente, aunque este tipo de certificado solo ofrece protección limitada.Encryption with a self-signed certificate is possible and is described in the following section, but a self-signed certificate offers only limited protection. 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.The level of encryption used by TLS, 40-bit or 128-bit, depends on the version of the Microsoft Windows operating system that is running on the application and database computers.

Advertencia

El uso del nivel de cifrado de 40 bits se considera no seguro.Usage of 40-bit encryption level is considered unsafe.

Advertencia

Las conexiones TLS cifradas mediante un certificado autofirmado no proporcionan una gran seguridad.TLS connections that are encrypted by using a self-signed certificate do not provide strong security. Son susceptibles de ataques de tipo "Man-in-the-middle".They are susceptible to man-in-the-middle attacks. No debe confiar en TLS con certificados autofirmados en un entorno de producción ni en servidores conectados a Internet.You should not rely on TLS using self-signed certificates in a production environment or on servers that are connected to the Internet.

Al habilitar el cifrado TLS aumenta la seguridad de los datos que se transmiten a través de redes entre instancias de SQL ServerSQL Server y las aplicaciones.Enabling TLS encryption increases the security of data transmitted across networks between instances of SQL ServerSQL Server and applications. Pero cuando todo el tráfico entre SQL ServerSQL Server y una aplicación cliente se cifra mediante TLS, es necesario el procesamiento adicional siguiente:However, when all traffic between SQL ServerSQL Server and a client application is encrypted using TLS, the following additional processing is required:

  • Se requiere un recorrido de ida y vuelta de red adicional en el momento de la conexión.An extra network roundtrip is required at connect time.
  • Los paquetes enviados desde la aplicación a la instancia de SQL ServerSQL Server los debe cifrar la pila TLS de cliente y los debe descifrar la pila TLS de servidor.Packets sent from the application to the instance of SQL ServerSQL Server must be encrypted by the client TLS stack and decrypted by the server TLS stack.
  • Los paquetes enviados desde la aplicación a la instancia de SQL ServerSQL Server los debe cifrar la pila TLS de servidor y los debe descifrar la pila TLS de cliente.Packets sent from the instance of SQL ServerSQL Server to the application must be encrypted by the server TLS stack and decrypted by the client TLS stack.

NotasRemarks

El certificado debe estar emitido para la Autenticación de servidor.The certificate must be issued for Server Authentication. El nombre del certificado debe ser el nombre de dominio completo (FQDN) del equipo.The name of the certificate must be the fully qualified domain name (FQDN) of the computer.

Los certificados se almacenan localmente para los usuarios del equipo.Certificates are stored locally for the users on the computer. Para instalar un certificado para usarlo con SQL ServerSQL Server, debe ejecutar el Administrador de configuración de SQL ServerSQL Server con una cuenta que tenga privilegios de administrador local.To install a certificate for use by SQL ServerSQL Server, you must be running SQL ServerSQL Server Configuration Manager with an account that has local administrator privileges.

El cliente debe ser capaz de comprobar la propiedad del certificado utilizado por el servidor.The client must be able to verify the ownership of the certificate used by the server. 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.If the client has the public key certificate of the certification authority that signed the server certificate, no further configuration is necessary. MicrosoftMicrosoft Windows incluye los certificados de clave pública de muchas entidades de certificación.Windows includes the public key certificates of many certification authorities. 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.If the server certificate was signed by a public or private certification authority for which the client does not have the public key certificate, you must install the public key certificate of the certification authority that signed the server certificate.

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.To use encryption with a failover cluster, you must install the server certificate with the fully qualified DNS name of the virtual server on all nodes in the failover cluster. Por ejemplo, si tiene un clúster con dos nodos cuyos nombres son test1.*<su empresa>*.com y test2.*<su empresa>*.com, y un servidor virtual llamado virtsql, tendrá que instalar un certificado para virtsql.*<su empresa>*.com en los dos nodos.For example, if you have a two-node cluster, with nodes named test1.*<your company>*.com and test2.*<your company>*.com, and you have a virtual server named virtsql, you need to install a certificate for virtsql.*<your company>*.com on both nodes. 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 .You can set the value of the ForceEncryption option on the Protocols for virtsql property box of SQL Server Network Configuration to Yes.

Nota

Al crear conexiones cifradas para un indexador de Azure Search en SQL ServerSQL 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.When creating encrypted connections for an Azure Search indexer to SQL ServerSQL Server on an Azure VM, see Configure a connection from an Azure Search indexer to SQL Server on an Azure VM.

Requisitos de certificadoCertificate Requirements

Para que SQL ServerSQL Server cargue un certificado TLS, el certificado debe cumplir las condiciones siguientes:For SQL ServerSQL Server to load a TLS certificate, the certificate must meet the following conditions:

  • El certificado debe estar en un almacén de certificados del equipo local o en el almacén de certificados del usuario actual.The certificate must be in either the local computer certificate store or the current user certificate store.

  • La cuenta de servicio de SQL ServerSQL Server debe tener el permiso necesario para acceder al certificado TLS.The SQL ServerSQL Server Service Account must have the necessary permission to access the TLS certificate.

  • 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.The current system time must be after the Valid from property of the certificate and before the Valid to property of the certificate.

  • El certificado debe estar destinado a la autenticación del servidor.The certificate must be meant for server authentication. 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) .This requires the Enhanced Key Usage property of the certificate to specify Server Authentication (1.3.6.1.5.5.7.3.1).

  • El certificado se debe crear mediante la opción KeySpec de AT_KEYEXCHANGE.The certificate must be created by using the KeySpec option of AT_KEYEXCHANGE. 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).Usually, the certificate's key usage property (KEY_USAGE) will also include key encipherment (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.The Subject property of the certificate must indicate that the common name (CN) is the same as the host name or fully qualified domain name (FQDN) of the server computer. Si se usa el nombre de host, se debe especificar el sufijo DNS en el certificado.When using the host name, the DNS suffix must be specified in the certificate. Si SQL ServerSQL 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.If SQL ServerSQL Server is running on a failover cluster, the common name must match the host name or FQDN of the virtual server and the certificates must be provisioned on all nodes in the failover cluster.

  • SQL Server 2008 R2SQL Server 2008 R2 y SQL Server 2008 R2SQL Server 2008 R2 Native Client (SNAC) admiten los certificados comodín.and the SQL Server 2008 R2SQL Server 2008 R2 Native Client (SNAC) support wildcard certificates. SNAC ha quedado en desuso y se ha reemplazado por Microsoft OLE DB Driver for SQL Server y Microsoft ODBC Driver for SQL Server.SNAC has since been deprecated and replaced with the Microsoft OLE DB Driver for SQL Server and Microsoft ODBC Driver for SQL Server. Es posible que otros clientes no admitan los certificados comodín.Other clients might not support wildcard certificates. Para más información, vea la documentación del cliente y KB 258858.For more information, see the client documentation and KB 258858.
    El certificado comodín no se puede seleccionar con el Administrador de configuración de SQL Server.Wildcard certificate cannot be selected by using the SQL Server Configuration Manager. 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.To use a wildcard certificate, you must edit the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib registry key, and enter the thumbprint of the certificate, without spaces, to the Certificate value.

    Advertencia

    Una modificación incorrecta del Registro puede provocar daños graves en el sistema.Incorrectly editing the registry can severely damage your system. Antes de efectuar cambios en el Registro, es recomendable que realice una copia de seguridad de los datos importantes del equipo.Before making changes to the registry, we recommend that you back up any valued data on the computer.

Para aprovisionar (instalar) un certificado en un solo servidorTo provision (install) a certificate on a single server

Con SQL Server 2019 (15.x)SQL Server 2019 (15.x), la administración de certificados se integra en el Administrador de configuración de SQL Server.With SQL Server 2019 (15.x)SQL Server 2019 (15.x), certificate management is integrated into the SQL Server Configuration Manager. Administrador de configuración de SQL Server para SQL Server 2019 (15.x)SQL Server 2019 (15.x) se puede usar con versiones anteriores de SQL ServerSQL Server.SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) can be used with earlier versions of SQL ServerSQL Server. Vea Administración de certificados (Administrador de configuración de SQL Server) para agregar un certificado a una única instancia de SQL ServerSQL Server.Refer to Certificate Management (SQL Server Configuration Manager) to add a certificate on a single SQL ServerSQL Server instance.

Si usa SQL Server 2012 (11.x)SQL Server 2012 (11.x) a través de SQL Server 2017 (14.x)SQL Server 2017 (14.x), y Administrador de configuración de SQL Server para SQL Server 2019 (15.x)SQL Server 2019 (15.x) no está disponible, siga estos pasos:If using SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017 (14.x)SQL Server 2017 (14.x), and SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) is not available, follow these steps:

  1. En el menú Inicio , haga clic en Ejecutar; en el cuadro Abrir , escriba MMC y haga clic en Aceptar.On the Start menu, click Run, and in the Open box, type MMC and click OK.

  2. En el menú Archivo de la consola MMC, haga clic en Agregar o quitar complemento.In the MMC console, on the File menu, click Add/Remove Snap-in.

  3. En el cuadro de diálogo Agregar o quitar complemento , haga clic en Agregar.In the Add/Remove Snap-in dialog box, click Add.

  4. En el cuadro de diálogo Agregar un complemento independiente , haga clic en Certificadosy, después, en Agregar.In the Add Standalone Snap-in dialog box, click Certificates, click Add.

  5. En el cuadro de diálogo Complemento de certificados , haga clic en Cuenta de equipoy, después, en Finalizar.In the Certificates snap-in dialog box, click Computer account, and then click Finish.

  6. En el cuadro de diálogo Agregar un complemento independiente , haga clic en Cerrar.In the Add Standalone Snap-in dialog box, click Close.

  7. En el cuadro de diálogo Agregar o quitar complemento , haga clic en Aceptar.In the Add/Remove Snap-in dialog box, click OK.

  8. En el complemento Certificados , expanda Certificados, expanda Personal. Tras ello, haga clic con el botón derecho en Certificados, seleccione Todas las tareasy, finalmente, haga clic en Importar.In the Certificates snap-in, expand Certificates, expand Personal, and then right-click Certificates, point to All Tasks, and then click Import.

  9. Haga clic con el botón derecho en el certificado importado, seleccione Todas las tareasy, luego, haga clic en Administrar claves privadas.Right-click the imported certificate, point to All Tasks, and then click Manage Private Keys. 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 ServerSQL Server.In the Security dialog box, add read permission for the user account used by the SQL ServerSQL Server service account.

  10. Finalice el Asistente para importación de certificadospara agregar un certificado al equipo y cierre la consola MMC.Complete the Certificate Import Wizard, to add a certificate to the computer, and close the MMC console. Para obtener más información acerca de cómo agregar un certificado a un equipo, vea la documentación de Windows.For more information about adding a certificate to a computer, see your Windows documentation.

Para aprovisionar (instalar) un certificado en varios servidoresTo provision (install) a certificate across multiple servers

Con SQL Server 2019 (15.x)SQL Server 2019 (15.x), la administración de certificados se integra en el Administrador de configuración de SQL Server.With SQL Server 2019 (15.x)SQL Server 2019 (15.x), certificate management is integrated into the SQL Server Configuration Manager. Administrador de configuración de SQL Server para SQL Server 2019 (15.x)SQL Server 2019 (15.x) se puede usar con versiones anteriores de SQL ServerSQL Server.SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) can be used with earlier versions of SQL ServerSQL 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.Refer to Certificate Management (SQL Server Configuration Manager) to add a certificate in a Failover Cluster configuration or in an Availability Group configuration.

Si usa SQL Server 2012 (11.x)SQL Server 2012 (11.x) a través de SQL Server 2017 (14.x)SQL Server 2017 (14.x), y Administrador de configuración de SQL Server para no está disponible para SQL Server 2019 (15.x)SQL Server 2019 (15.x), siga los pasos de la sección Para aprovisionar (instalar) un certificado en un solo servidor para cada servidor.If using SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017 (14.x)SQL Server 2017 (14.x), and SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) is not available, follow the steps in section To provision (install) a certificate on a single server for every server.

Para exportar el certificado del servidorTo export the server certificate

  1. En el complemento Certificados , busque el certificado en la carpeta Certificados / Personal , haga clic con el botón secundario en Certificado, seleccione Todas las tareasy, a continuación, en Exportar.From the Certificates snap-in, locate the certificate in the Certificates / Personal folder, right-click the Certificate, point to All Tasks, and then click Export.

  2. Complete el Asistente para exportación de certificadosy guarde el archivo del certificado en una ubicación adecuada.Complete the Certificate Export Wizard, storing the certificate file in a convenient location.

Para configurar el servidor para forzar conexiones cifradasTo configure the server to force encrypted connections

Importante

La cuenta de servicio de SQL Server debe tener permisos de lectura en el certificado que se usa para forzar el cifrado en el servidor de SQL Server.The SQL Server Service Account must have read permissions on the certicate used to force encryption on the SQL Server. En el caso de una cuenta de servicio sin privilegios, será necesario agregar permisos de lectura al certificado.For a non-privileged service account, read permissions will need to be added to the certificate. Si no lo hace, se puede producir un error en el reinicio del servicio SQL Server.Failure to do so can cause the SQL Server service restart to fail.

  1. En 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 <instancia de servidor> y, después, seleccione Propiedades.In SQL Server Configuration Manager, expand SQL Server Network Configuration, right-click Protocols for <server instance>, and then selectProperties.

  2. En el cuadro de diálogo Protocolos de <nombre de instancia> Propiedades, en la pestaña Certificado, seleccione el certificado que quiera en el menú desplegable del cuadro Certificado y, después, haga clic en Aceptar.In the Protocols for <instance name> Properties dialog box, on the Certificate tab, select the desired certificate from the drop-down for the Certificate box, and then click OK.

  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.On the Flags tab, in the ForceEncryption box, select Yes, and then click OK to close the dialog box.

  4. Reinicie el servicio SQL ServerSQL Server .Restart the SQL ServerSQL Server service.

Nota

Para garantizar que la conectividad entre el cliente y el servidor es segura, configure el cliente para que solicite conexiones cifradas.To ensure secure connectivity between client and server, configure the client to request encrypted connections. Se explican más detalles más adelante en este artículo.More details are explained later in this article.

Para configurar el cliente de modo que solicite conexiones cifradasTo configure the client to request encrypted connections

  1. Copie el certificado original o el archivo del certificado exportado en el equipo cliente.Copy either the original certificate or the exported certificate file to the client computer.

  2. En el equipo cliente, use el complemento Certificados para instalar el certificado raíz o el archivo del certificado exportado.On the client computer, use the Certificates snap-in to install either the root certificate or the exported certificate file.

  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.Using SQL Server Configuration Manager, right-click SQL Server Native Client Configuration, and then click Properties.

  4. En la página Marcas , en el cuadro Forzar cifrado de protocolo , haga clic en .On the Flags page, in the Force protocol encryption box, click Yes.

Para cifrar una conexión desde SQL Server Management StudioTo encrypt a connection from SQL Server Management Studio

  1. En la barra de herramientas del Explorador de objetos, haga clic en Conectary, a continuación, en Motor de base de datos.On the Object Explorer toolbar, click Connect, and then click Database Engine.

  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.In the Connect to Server dialog box, complete the connection information, and then click Options.

  3. En la pestaña Propiedades de conexión , haga clic en Cifrar conexión.On the Connection Properties tab, click Encrypt connection.

Protocolo de seguridad de Internet (IPSec)Internet Protocol Security (IPSec)

Los datos de SQL ServerSQL Server se pueden cifrar durante la transmisión mediante IPSec.SQL ServerSQL Server data can be encrypted during transmission by using IPSec. Los sistemas operativos del cliente y del servidor proporcionan IPSec, que no requiere configuración de SQL ServerSQL Server.IPSec is provided by the client and server operating systems and requires no SQL ServerSQL Server configuration. Para obtener información sobre IPSec, vea la documentación de Windows o de la red.For information about IPSec, see your Windows or networking documentation.

Consulte tambiénSee Also

Soporte de TLS 1.2 para Microsoft SQL Server TLS 1.2 support for Microsoft SQL Server
Configuración de Firewall de Windows para permitir el acceso a SQL Server Configure the Windows Firewall to Allow SQL Server Access
Cifrado de SQL ServerSQL Server Encryption