証明書を使用して Service Broker ネットワーク アクセスを許可する方法 (Transact-SQL)
他のインスタンスが証明書ベースの Service Broker トランスポート セキュリティを使用してメッセージを送信できるようにするには、そのインスタンスのためのユーザーを作成し、そのインスタンスの証明書をインストールします。
証明書を使用して他のインスタンスからのアクセスを許可するには
信頼されたソースから相手方インスタンスの証明書を取得します。この場合、証明書は、暗号化された電子メールを使用して送信されるか、フロッピー ディスクなどの物理メディアで受け渡されるのが一般的です。
セキュリティに関する注意 信頼できる発行元の証明書以外はインストールしないでください。
ログインを作成します。
ログインのユーザーを master データベースに作成します。
相手方インスタンスの証明書を master データベースにインストールします。手順 3. で作成したユーザーがこの証明書を所有します。
このログインに対して、Service Broker のエンドポイントに対する CONNECT アクセスを許可します。
ローカル インスタンスで Service Broker のトランスポート セキュリティに使用している証明書をダンプします。
セキュリティに関する注意 トランスポート セキュリティに使用している証明書のみをダンプします。証明書に関連付けられている秘密キーをダンプしたり配布したりしないでください。
相手方データベースの管理者に証明書を提供します。証明書を受け取ったリモート データベースの管理者は、上の手順 1. ~ 4. に従ってその証明書をインストールします。
それぞれのインスタンスでアクセスを構成すると、その 2 つのインスタンスの間の通信で 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