Certificados y Service Broker
En este tema se describe cómo SQL Server utiliza certificados para la seguridad remota de Service Broker. La seguridad remota de Service Broker hace referencia a operaciones que implican más de una instancia de SQL Server cuando estas operaciones utilizan seguridad de diálogo o seguridad de transporte.
Información general
La seguridad remota de Service Broker asigna una operación procedente de fuera de una instancia a una entidad de seguridad de base de datos de SQL Server. A continuación, la operación continúa en el contexto de seguridad de esa entidad de seguridad de base de datos, con comprobaciones de permiso de SQL Server normales. Por ejemplo, cuando un mensaje llega a una conversación que utiliza seguridad de diálogo, Service Broker utiliza la información del mensaje para identificar una entidad de seguridad de base de datos para el extremo remoto de la conversación. A continuación, SQL Server comprueba que la entidad de seguridad tiene permiso para conectarse a la base de datos que aloja el servicio de destino y permiso para enviar un mensaje al servicio de destino.
SQL Server utiliza certificados para comprobar la identidad de una base de datos remota y para identificar la entidad de seguridad de base de datos local de la operación. Así, instalar un certificado en SQL Server constituye una instrucción de confianza en la base de datos que aloja la clave privada del certificado. Administre cuidadosamente los certificados que instala y los enlaces de servicio remoto que crea.
![]() |
---|
Instale sólo certificados que provengan de fuentes de confianza. No distribuya claves privadas. |
Para comprobar la identidad de un servidor remoto, SQL Server debe recibir información que pueda descifrarse con la clave pública de un certificado que pertenece a una entidad de seguridad de base de datos local. Si SQL Server puede descifrar correctamente la información, significa que la base de datos remota contiene la clave privada que corresponde a la clave pública del certificado local. Una vez que SQL Server comprueba la identidad de una base de datos remota, la base de datos remota puede actuar con los permisos de la entidad de seguridad de base de datos local.
Para la seguridad de transporte, cada base de datos debe confiar en la otra base de datos. La seguridad de transporte puede utilizar certificados o autenticación de Windows. Para obtener más información sobre la seguridad de transporte, vea Seguridad de transporte de Service Broker.
Para la seguridad de diálogo, el iniciador del diálogo debe confiar en el destino y debe poder comprobar su identidad. Sin embargo, el destino puede permitir conexiones de iniciadores que no proporcionen información de identificación. En este caso, los iniciadores utilizan la función public de la base de datos que aloja el servicio de destino. La seguridad de diálogo siempre utiliza certificados. Para obtener más información sobre la seguridad de diálogo, vea Seguridad de diálogo de Service Broker.
SQL Server no proporciona métodos automatizados para configurar la seguridad de Service Broker mediante certificados.
Requisitos de certificado
Para que la seguridad de Service Broker utilice un certificado, éste debe cumplir los siguientes requisitos:
El módulo clave debe ser inferior a 2048.
La longitud total del certificado debe ser inferior a 32 kilobytes (KB).
Se debe especificar un nombre de asunto.
Se deben especificar fechas de validez.
La longitud de la clave debe ser un múltiplo de 64 bits.
Un certificado autofirmado creado con la instrucción Transact-SQL CREATE CERTIFICATE cumple los requisitos de la lista anterior. Puede que los certificados cargados desde un archivo no cumplan estos requisitos.
Cuando el certificado se almacena en SQL Server, debe estar cifrado con la clave maestra de la base de datos. Service Broker no puede utilizar certificados que sólo se cifran con una contraseña. Además, la clave maestra de la base de datos debe estar cifrada con la clave de servicio de la instancia. De lo contrario, Service Broker no puede abrirla.
Para que SQL Server utilice un certificado para iniciar una conversación, el certificado debe estar marcado como ACTIVE FOR BEGIN_DIALOG. Los certificados se marcan como ACTIVE FOR BEGIN_DIALOG de forma predeterminada. Sin embargo, puede elegir desactivar temporalmente un certificado mientras se actualiza la configuración de seguridad de un servicio. Para obtener más información, vea CREATE CERTIFICATE (Transact-SQL) y ALTER CERTIFICATE (Transact-SQL).