Cómo permitir el acceso a la red en Service Broker con certificados (Transact-SQL)

Para permitir que otra instancia envíe mensajes utilizando la seguridad de transporte de Service Broker basada en certificados, cree un usuario para la otra instancia e instale el certificado en dicha instancia.

Para permitir el acceso desde otra instancia mediante certificados

  1. Obtenga el certificado para la otra instancia en un origen de confianza. Normalmente, esto supone enviar la certificando mediante un correo electrónico cifrado o transferir el certificado en un medio físico, como un disquete.

    Nota de seguridadNota de seguridad

    Instale sólo certificados que provengan de fuentes de confianza.

  2. Cree un inicio de sesión.

  3. Cree un usuario para el inicio de sesión en la base de datos maestra.

  4. Instale el certificado para la otra instancia en la base de datos maestra. El usuario creado en el paso 3 será el propietario del certificado.

  5. Conceda acceso de inicio de sesión CONNECT al extremo de Service Broker.

  6. Vuelque el certificado que se utiliza para la seguridad de transporte de Service Broker en la instancia local.

    Nota de seguridadNota de seguridad

    Vuelque sólo el certificado utilizado para la seguridad de transporte. No vuelque ni distribuya la clave privada asociada con el certificado.

  7. Proporcione el certificado al administrador de la otra base de datos. El administrador de la base de datos remota instala este certificado con los pasos 1 a 4 anteriores.

Una vez configurado el acceso en cada instancia, las comunicaciones entre las dos instancias utilizarán la seguridad de transporte de Service Broker cuando los extremos de ambas instancias estén configurados para permitir la seguridad de transporte.

Ejemplo

USE master ;
GO

-- Create a login for the remote instance.

CREATE LOGIN RemoteInstanceLogin
    WITH PASSWORD = '#gh!3A%!1@f' ;
GO

-- Create a user for the login in the master database.

CREATE USER RemoteInstanceUser
    FOR LOGIN RemoteInstanceLogin ;
GO

-- Load the certificate from the file system. Notice that
-- the login owns the certificate.

CREATE CERTIFICATE RemoteInstanceCertificate
    AUTHORIZATION RemoteInstanceUser
    FROM FILE='C:\Certificates\AceBikeComponentsCertificate.cer' ;
GO
GRANT CONNECT ON ENDPOINT::ThisInstanceEndpoint to RemoteInstanceLogin ;
GO
-- Write the certificate from this instance
-- to the file system. This command assumes
-- that the certificate used by the Service Broker
-- endpoint is named TransportSecurity.

BACKUP CERTIFICATE TransportSecurity
    TO FILE = 'C:\Certificates\ThisInstanceCertificate.cer' ;
GO