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';