Service Broker 2 bases 1/4 : mise en place de la couche de transport sécurisée
/*
Mise en place de la couche de transport sécurisée
nécessaire à Service Broker entre deux serveurs...
*/
:setvar serv1 "READY-12-01"
:setvar serv2 "READY-12-02"
:connect $(serv1)
--------------------------------------------------------------------------
-- Etape 1.1 -- sur serv1
--------------------------------------------------------------------------
USE [master];
GO
--on crée un certificat dans master, la clé public sera
--utilisée pour l'authentification des connections distantes
CREATE CERTIFICATE SecuriteTransport1
WITH SUBJECT = 'Certificat pour la sécurisation du transport',
START_DATE = '08/12/2005';
GO
--on vérifie la création
SELECT * FROM sys.certificates WHERE LEFT(name,2) <>'##';
GO
--on exporte le certificat et on le copie sur le serveur distant
BACKUP CERTIFICATE SecuriteTransport1
TO FILE = '\\$(serv1)\Backups\Transport-$(serv1).cer';
go
:!! copy \\$(serv1)\Backups\Transport-$(serv1).cer \\$(serv2)\Backups
--on crée un "endpoint" pour accepter les communications vers
--l'extérieur
--¤¤¤¤¤
CREATE ENDPOINT BrokerEndpoint
STATE = STARTED
AS TCP (LISTENER_PORT = 4022)
FOR SERVICE_BROKER
(
AUTHENTICATION = CERTIFICATE SecuriteTransport1,
ENCRYPTION = REQUIRED -- c'est le defaut
);
GO
--on verifie la création
SELECT * FROM sys.endpoints WHERE name = 'BrokerEndpoint';
GO
--on crée un login et un utilisateur pour leur
-- assigner le certificat venant de la base master distante
CREATE LOGIN LoginDistant1
WITH PASSWORD = '#gh!3A%!1@f';
GO
CREATE USER UtilisateurDistant1
FROM LOGIN LoginDistant1;
GO
--grant connect au endpoint
GRANT CONNECT ON ENDPOINT::BrokerEndpoint TO LoginDistant1
GO
:connect $(serv2)
--------------------------------------------------------------------------
-- Etape 1.2 -- sur serv2
--------------------------------------------------------------------------
USE [master];
GO
--on crée un certificat dans master, la clé public sera
--utilisée pour l'authentification des connections distantes
CREATE CERTIFICATE SecuriteTransport2
WITH SUBJECT = 'Certificat pour la sécurisation du transport',
START_DATE = '08/12/2005';
GO
--on verifie la création
SELECT * FROM sys.certificates WHERE LEFT(name,2) <>'##';
GO
--on exporte le certificat et on le copie sur le serveur distant
BACKUP CERTIFICATE SecuriteTransport2
TO FILE = '\\$(serv2)\Backups\Transport-$(serv2).cer';
go
:!! copy \\$(serv2)\Backups\Transport-$(serv2).cer \\$(serv1)\Backups
--on crée un "endpoint" pour accepter les communications vers
--l'extérieur
CREATE ENDPOINT BrokerEndpoint
STATE = STARTED
AS TCP (LISTENER_PORT = 4022)
FOR SERVICE_BROKER
(
AUTHENTICATION = CERTIFICATE SecuriteTransport2,
ENCRYPTION = REQUIRED
);
GO
--on verifie la création
SELECT * FROM sys.endpoints WHERE name = 'BrokerEndpoint';
GO
--on crée un login et un utilisateur pour leur
-- assigner le certificat venant de la base master distante
CREATE LOGIN LoginDistant2
WITH PASSWORD = '#gh!3A%!1@f';
GO
CREATE USER UtilisateurDistant2
FROM LOGIN LoginDistant2;
GO
--grant connect au endpoint
GRANT CONNECT ON ENDPOINT::BrokerEndpoint TO LoginDistant2
go
--on crée un certificat à partir du fichier reçu
CREATE CERTIFICATE SecuriteTransport1
AUTHORIZATION UtilisateurDistant2
FROM FILE = '\\$(serv2)\Backups\Transport-$(serv1).cer';
GO
:connect $(serv1)
--------------------------------------------------------------------------
-- Etape 1.3 -- sur serv1
--------------------------------------------------------------------------
USE [master];
GO
--on crée un certificat à partir du fichier reçu
CREATE CERTIFICATE SecuriteTransport2
AUTHORIZATION UtilisateurDistant1
FROM FILE = '\\$(serv1)\Backups\Transport-$(serv2).cer';