如何允许 Service Broker 使用证书进行网络访问 (Transact-SQL)

若要允许另一个实例使用基于证书的 Service Broker 传输安全模式来发送消息,请为该实例创建用户并安装证书。

允许另一个实例使用证书进行访问

  1. 从可信源为另一个实例获取证书。这通常会涉及到使用加密电子邮件发送证书或通过软盘等物理媒体传输证书。

    安全说明安全说明

    只能安装来自可信来源的证书。

  2. 创建一个登录名。

  3. master 数据库中为该登录名创建一个用户。

  4. master 数据库中安装另一个实例的证书。步骤 3 中所创建的用户拥有该证书。

  5. 授予该登录名对 Service Broker 端点的 CONNECT 访问权限。

  6. 将用于 Service Broker 传输安全模式的证书转储到本地实例中。

    安全说明安全说明

    只转储用于传输安全模式的证书。不要转储或分发与该证书相关的私钥。

  7. 将该证书提供给另一个数据库的管理员。该远程数据库的管理员使用上述步骤 1 至步骤 4 安装此证书。

每个实例中都配置了访问权限后,当两个实例的端点都被配置为允许传输安全性时,这两个端点间的通信将使用 Service Broker 传输安全模式。

示例

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