Вы используете сертификаты, которые являются опцией аутентификации Service Broker, разработанной специально для такого сценария, как ваш. См. Как работает аутентификация на основе сертификатов . Когда конечные точки настроены с аутентификацией на основе сертификатов, ручной пакет будет содержать обмен аутентификацией на основе SSPI Schannel (более известный как SSL или TLS). Полученный сертификат, используемый партнером, используется для авторизации соединения на основе доверия, полученного при развертывании сертификата. Это означает, что используемые сертификаты не проверяются для конкретного свойства, как в случае https://example.com', где example.com должен иметь конкретный OID в сертификате и подпись доверенной авторизации, а вместо этого, если сертификат развернут (т.е. найден в базе данных master), тогда владельцем развернутого сертификата является личность. Это позволяет вам использовать самозаверяющие сертификаты безопасным способом с корнем доверия при развертывании (т. Е. Системный администратор), а не по доверенности (т. Е. Verisign). Это, вероятно, больше информации, чем вам нужно :)
Суть этого звучит так:
-------------------------------------
-- connect to server
-------------------------------------
use master;
go
create master key encryption by password = '...';
create certificate [<servername>]
with subject = '<servername>'
, start_date = '20100216'
, expiry_date = '20150216';
create endpoint broker
state = started
as tcp (listener_port = 4022)
for service_broker (authentication = certificate [<servername>]);
-- Export the public key to disk
backup certificate [<servername>]
to file = '\\someshare\<servername>.cer';
--------------------------------
-- connect to client
--------------------------------
use master;
go
create master key encryption by password = '...';
create certificate [<clientname>]
with subject = '<clientname>'
, start_date = '20100216'
, expiry_date = '20150216';
create endpoint broker
state = started
as tcp (listener_port = 4022)
for service_broker (authentication = certificate [<clientname>]);
-- Export the public key to disk
backup certificate [<clientname>]
to file = '\\someshare\<clientname>.cer';
--create an identity for server and import the server's certificate:
create login [<servername>] with password = '...';
alter login [<servername>] disable;
create user [<servername>];
create certificate [<servername>]
authorization [<servername>]
from file = '\\someshare\<servername>.cer';
--authorize <servername> to connect on the broker endpoint
grant connect on endpoint::broker to [<servername>];
---------------------------------------
-- connect to the server
---------------------------------------
--create an identity for client and import the client's certificate:
create login [<clientname>] with password = '...';
alter login [<clientname>] disable;
create user [<clientname>];
create certificate [<clientname>]
authorization [<clientname>]
from file = '\\someshare\<clientname>.cer';
--authorize <clientname> to connect on the broker endpoint
grant connect on endpoint::broker to [<clientname>];