Как разрешить сетевой доступ к компоненту Service Broker, используя сертификаты (Transact-SQL)
Чтобы разрешить другому экземпляру отправлять сообщения, используя безопасность транспорта компонента Service Broker на основе сертификатов, нужно создать пользователя для другого экземпляра и установить сертификат для другого экземпляра.
Разрешение доступа из другого экземпляра при помощи сертификатов
Получите сертификат для другого экземпляра из доверенного источника. Обычно в таких случаях сертификат пересылается в зашифрованном электронном письме или передается на физическом носителе, например на гибком диске.
Примечание по безопасности
Устанавливайте сертификаты, полученные только из доверенных источников.
Создайте имя входа.
В базе данных master создайте пользователя для этого имени входа.
Установите сертификат для другого экземпляра в базе данных master. Пользователь, созданный на шаге 3, является владельцем сертификата.
Предоставьте имени входа доступ с помощью инструкции CONNECT к конечной точке компонента Service Broker.
Выведите сертификат, который используется для транспортной безопасности компонента Service Broker на локальном экземпляре.
Примечание по безопасности
Выведите только сертификат, который используется для транспортной безопасности. Не выводите и не распространяйте закрытый ключ, связанный с сертификатом.
Предоставьте сертификат администратору другой базы данных. Администратор удаленной базы данных устанавливает сертификат, используя описанные выше шаги 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