Compartir vía


Requisitos de certificado para SQL Server

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

Requisitos de certificado para el cifrado de SQL Server

Para usar la seguridad de la capa de transporte (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 obtener más información, consulte Cifrado de conexiones a SQL Server mediante la importación de un certificado.

  • La hora actual del sistema debe ser posterior al valor de la propiedad Valid from y anterior al valor de la propiedad Valid to del certificado. Para obtener más información, vea Certificados expirados.

    Nota:

    El certificado debe estar destinado a la autenticación del servidor. Esto requiere la propiedad Uso mejorado de clave del certificado para especificar la autenticación del servidor (1.3.6.1.5.5.7.3.1).

  • El certificado debe crearse con la KeySpec opción de AT_KEYEXCHANGE. Esto requiere un certificado que use un proveedor de almacenamiento criptográfico heredado para almacenar la clave privada. Normalmente, la propiedad de uso de claves del certificado (KEY_USAGE) también incluye el cifrado de claves (CERT_KEY_ENCIPHERMENT_KEY_USAGE) y una firma digital (CERT_DIGITAL_SIGNATURE_KEY_USAGE).

  • El nombre alternativo del firmante debe incluir todos los nombres que los clientes pueden usar para conectarse a una instancia de SQL Server.

El cliente debe poder 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 de servidor, no es necesario realizar ninguna otra configuración. Microsoft Windows incluye los certificados de clave pública de muchas entidades de certificación. Si el certificado de servidor fue firmado por 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 va a conectar a SQL Server.

Importante

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

Grupo de disponibilidad AlwaysOn

Si la instancia de SQL Server forma parte de un grupo de disponibilidad AlwaysOn, puede usar uno de los métodos siguientes para crear el certificado:

  • Método 1: use un certificado en todas las réplicas del grupo de disponibilidad. El nombre común es arbitrario, por lo que puede ser cualquier valor de marcador de posición. El nombre de host y el FQDN de todas las réplicas de SQL Server del grupo de disponibilidad y los nombres del agente de escucha del grupo de disponibilidad deben incluirse en el nombre alternativo del firmante del certificado. Si se agregan réplicas adicionales al grupo de disponibilidad después de generar el certificado original, el certificado debe volver a generarse con los nombres de todas las réplicas y volver a importarlo a cada réplica. El certificado también debe importarse al almacén de certificados en todos los clientes que se conectan a la réplica del grupo de disponibilidad o al agente de escucha del grupo de disponibilidad, a menos que el certificado esté firmado por una entidad de certificación (CA) pública o oficial. Si no incluye las réplicas del grupo de disponibilidad y los nombres del agente de escucha en el certificado, debe incluir uno de los valores del nombre alternativo del firmante en o HostNameInCertificate la ruta de acceso al certificado en los ServerCertificate valores de la cadena de conexión al conectarse al grupo de disponibilidad. Especificar nombres en el certificado es el enfoque recomendado.

    A continuación se muestra un ejemplo de las propiedades que definen un certificado configurado correctamente para un grupo de disponibilidad con dos servidores denominados test1.<your company>.com y test2.<your company>.com, y un agente de escucha de grupo de disponibilidad denominado aglistener.<your company>.com:

    CN = <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name = aglistener.<your company>.com 
    DNS Name = test1.<your company>.com
    DNS Name = test2.<your company>.com
    DNS Name = aglistener
    DNS Name = test1
    DNS Name = test2
    
  • Método 2: use un certificado independiente para cada réplica del grupo de disponibilidad. Agregar réplicas a un grupo de disponibilidad después de generar un certificado es más fácil cuando se usan certificados independientes, ya que solo es necesario generar un certificado para la nueva réplica, en lugar de modificar todos los certificados en todas las réplicas existentes. El nombre común es arbitrario, por lo que puede ser cualquier valor de marcador de posición. El nombre de host y el FQDN de la instancia de SQL Server correspondiente y los nombres del agente de escucha del grupo de disponibilidad deben incluirse en el nombre alternativo del firmante del certificado para cada réplica respectiva. Importe cada certificado en su réplica correspondiente y, a menos que el certificado esté firmado por una entidad de certificación (CA) pública o oficial, importetodos los certificados a todos los almacenes de certificados de todos los clientes que se conectan a las réplicas o al agente de escucha del grupo de disponibilidad.

    A continuación se muestran ejemplos de las propiedades que definen certificados configurados correctamente para un grupo de disponibilidad con dos instancias denominadas test1.<your company>.com y test2.<your company>.com, y un agente de escucha de grupo de disponibilidad denominado aglistener.<your company>.com:

    Certificado en test1:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test1.<your company>.com 
    DNS Name= aglistener.<your company>.com
    DNS Name= aglistener
    DNS Name= test1
    

    Certificado en test2:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test2.<your company>.com 
    DNS Name= aglistener.<your company>.com 
    DNS Name= aglistener
    DNS Name= test2 
    

Instancia de clúster de conmutación por error

Si SQL Server está configurado como una instancia de clúster de conmutación por error, debe instalar el certificado de servidor con el nombre de host o el nombre DNS completo (FQDN) del servidor virtual en todos los nodos del clúster de conmutación por error. y los certificados deben aprovisionarse en todos los nodos del clúster de conmutación por error. Por ejemplo, si tiene un clúster de dos nodos, con nodos denominados test1.<your company>.com y test2.<your company>.com, y tiene un servidor virtual denominado virtsql, debe instalar un certificado para virtsql.<your company>.com en ambos nodos.

Importe el certificado al clúster de conmutación por error en la secuencia documentada en Configuración del motor de base de datos de SQL Server para cifrar las conexiones.

A continuación se muestra un ejemplo de las propiedades que definen un certificado configurado correctamente para una instancia de clúster de conmutación por error:

CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql

Para obtener más información sobre los clústeres de SQL, consulte Antes de instalar los clústeres de conmutación por error.

Comprobación de si un certificado cumple los requisitos

En SQL Server 2019 (15.x) y versiones posteriores, el Administrador de configuración de SQL Server valida automáticamente todos los requisitos de certificado durante la propia fase de configuración. Si SQL Server se inicia correctamente después de configurar un certificado, es una buena indicación de que SQL Server puede usar ese certificado. Sin embargo, es posible que algunas aplicaciones cliente sigan teniendo otros requisitos para los certificados que se pueden usar para el cifrado y podría experimentar errores diferentes 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 asunto.

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

  • herramienta sqlcheck: sqlcheck es una herramienta de línea de comandos que examina la configuración actual de la cuenta de equipo y servicio y genera un informe de texto en la ventana consola que resulta útil para solucionar varios errores de conexión. La salida proporciona la siguiente información 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 y para obtener instrucciones de descarga, consulte Bienvenido a la wiki de CSS_SQL_Networking_Tools.

  • certutil tool: certutil.exe es un programa de línea de comandos, instalado como parte de Servicios de certificados. Puede usar certutil.exe para volcar y mostrar información del certificado. Use la -v opción 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 certificados con el complemento MMC, vea How to: View certificates with the MMC snap-in.

Importar un certificado con un nombre diferente al nombre de host

Actualmente, solo puede importar un certificado mediante el Administrador de configuración de SQL Server si el nombre del firmante del certificado coincide con el nombre de host del equipo.

Si desea usar un certificado con un nombre de firmante diferente, siga estos pasos:

  1. Importe el certificado en el almacén de certificados del equipo local mediante el complemento Certificados.

  2. 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 la instancia de SQL Server y, a continuación, elija Propiedades para abrir el cuadro de diálogo Protocolos para <instance_name> propiedades .

  3. En la pestaña Certificado , seleccione el certificado que importó en el almacén de certificados de la lista desplegable Certificado :

    Captura de pantalla de la pestaña certificado del cuadro de diálogo propiedades del Administrador de configuración de SQL Server.

La importación de un certificado con un nombre diferente al nombre de host genera el siguiente mensaje de error:

The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server
Certificate name: random-name
Computer name: sqlserver.domain.com

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 de SQL Server en SQL Server 2019 (15.x) y versiones posteriores para aprovisionar un certificado expirado. SQL Server continúa ejecutándose sin problemas si el certificado expira después de que ya esté aprovisionado. Pero algunas aplicaciones cliente como Power BI comprueban la validez del certificado en cada conexión y generan 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.

Paso siguiente