Requisitos de certificado para SQL Server

En este artículo se describen los requisitos de certificado para SQL Server y se explica cómo comprobar si un certificado cumple estos requisitos.

Requisitos de certificado para el cifrado de SQL Server

Si quiere usar TLS para el cifrado de SQL Server, debe aprovisionar un certificado (uno de los tres tipos digitales) que cumpla las condiciones siguientes:

  • El certificado debe estar en el almacén de certificados del equipo local o en el almacén de certificados de la cuenta de servicio de SQL Server. Se recomienda el almacén de certificados del equipo local, ya que evita volver a configurar los certificados con cambios en la cuenta de inicio de SQL Server.

  • La cuenta de servicio de SQL Server debe tener el permiso necesario para acceder al certificado TLS. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.

  • La hora actual del sistema debe ser posterior al valor de la propiedad Válido desde y anterior al valor de la propiedad Válido hasta del certificado. Para obtener más información, consulte Certificados expirados.

    Nota:

    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 que use un proveedor de almacenamiento criptográfico heredado para almacenar la clave privada. 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) y una firma digital (CERT_DIGITAL_SIGNATURE_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 deben estar aprovisionados 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. Para obtener más información sobre los clústeres de SQL, consulte Antes de instalar los clústeres de conmutación por error.

  • Al conectarse a un agente de escucha de grupo de disponibilidad, los certificados que se aprovisionan para cada nodo de servidor participante del clúster de conmutación por error también deben tener una lista de todos los agentes de escucha de grupo de disponibilidad establecidos en el nombre alternativo del firmante del certificado. Para obtener más información, consulte Agentes de escucha y certificados TLS/SSL. Para obtener más información sobre Always On de SQL, consulte Conexión a un agente de escucha de grupo de disponibilidad Always On.

  • El nombre alternativo del firmante debe incluir todos los nombres que los clientes pueden usar para conectarse a una instancia de SQL Server. Si usa grupos de disponibilidad, el nombre alternativo del firmante debe incluir NetBIOS y el nombre de dominio completo (FQDN) del localhost y los agentes de escucha creados.

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 de servidor lo firmó una entidad de certificación pública o privada para la que el cliente no tiene el certificado de clave pública, debe instalar el certificado de clave pública de la entidad de certificación que firmó el certificado de servidor en cada cliente que se vaya a conectar a SQL Server.

Importante

SQL Server no se iniciará si existe un certificado en el almacén del equipo, pero solo cumple algunos requisitos de la lista anterior y está configurado manualmente para su uso mediante el Administrador de configuración de SQL Server o mediante entradas del Registro. Seleccione otro certificado que cumpla todos los requisitos, o bien quite el certificado para que no lo use SQL Server hasta que pueda aprovisionar uno que cumpla los requisitos, o bien use un certificado autogenerado como se indica en Certificados autofirmados generados por SQL Server.

Comprobación de si un certificado cumple los requisitos

A partir de SQL Server 2019 (15.x), el Administrador de configuración de SQL Server valida automáticamente todos los requisitos de certificado durante la fase de configuración. Si SQL Server se inicia correctamente después de configurar un certificado, es un indicio de que SQL Server puede usar ese certificado. Aun así, es posible que algunas aplicaciones cliente tengan otros requisitos para los certificados que se pueden usar para el cifrado y podrían producirse diversos errores en función de la aplicación que se use. En ese escenario, debe comprobar la documentación de soporte técnico de la aplicación cliente para obtener más información sobre el tema.

Puede usar uno de los métodos siguientes para comprobar la validez del certificado para su uso con SQL Server:

  • Herramienta sclcheck: sqlcheck es una herramienta de línea de comandos que examina la configuración actual de la cuenta de equipo y de servicio y genera un informe de texto en la ventana de la consola que resulta útil para solucionar varios errores de conexión. La salida contiene la información siguiente sobre los certificados:

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    Para obtener más información sobre las funcionalidades de la herramienta e instrucciones de descarga, consulte Bienvenido a la wiki de CSS_SQL_Networking_Tools.

  • Herramienta certutil: certutil.exe es un programa de línea de comandos que está instalado como parte de los servicios de certificados. Puede usar certutil.exe para volcar y mostrar información del certificado. Use la opción -v para obtener información detallada. Para obtener más información, consulte: certutil.

  • Complemento Certificados: también puede usar la ventana Complemento Certificados para ver más información sobre los certificados en varios almacenes de certificados del equipo. Pero esta herramienta no muestra información de tipo KeySpec. Para obtener más información sobre cómo ver los certificados con el complemento MMC, vea Cómo ver certificados con el complemento MMC.

Más información

Certificados expirados

SQL Server solo comprueba la validez de los certificados en el momento de la configuración. Por ejemplo, no puede usar el Administrador de configuración en SQL Server 2019 (15.x) y versiones posteriores para aprovisionar un certificado expirado. SQL Server sigue ejecutándose sin problemas si el certificado expira después de que ya se haya aprovisionado. Aun así, algunas aplicaciones cliente como Power BI comprueban la validez del certificado en cada conexión y genera un error si la instancia de SQL Server está configurada para usar un certificado expirado para el cifrado. Se recomienda no usar un certificado expirado para el cifrado de SQL Server.