Artikel-ID: 915852 - Geändert am: Montag, 25. Februar 2008 - Version: 1.2

Verwenden von Zertifikaten für Remotesicherheit in SQL Server 2005 Service Broker bei mehreren Instanzen von SQL Server 2005

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
915852  (http://support.microsoft.com/kb/915852/EN-US/ ) How to use certificates for SQL Server 2005 Service Broker remote security on multiple instances of SQL Server 2005
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Alles erweitern | Alles schließen

Einführung

Dieser Artikel beschreibt, wie Sie Zertifikate für Remotesicherheit in SQL Server 2005 Service Broker bei mehreren Instanzen von SQL Server 2005 benutzen. Mithilfe von Zertifikaten können Sie in dieser Situation sichere Verbindungen ermöglichen.

Weitere Informationen

Remotesicherheit in SQL Server 2005 Service Broker beinhaltet Vorgänge, die sich auf mehr als eine Instanz von SQL Server beziehen, wenn diese Vorgänge entweder Dialog- oder Transportsicherheit verwenden. Das folgende Beispiel veranschaulicht, wie Sie Zertifikate für Remotesicherheit in SQL Server 2005 Service Broker bei zwei Instanzen von SQL Server 2005 benutzen. In diesem Beispiel wird davon ausgegangen, dass die nachstehenden Voraussetzungen erfüllt sind:
  • Sie haben vier Zertifikate und vier Dateien für private Schüssel mit dem Programm "Zertifikaterstellung" (Makecert.exe) erstellt. In diesem Beispiel wird davon ausgegangen, dass die Dateien auf beiden Servern in den Ordner "C:\Certificates" kopiert und folgendermaßen benannt wurden:
    • SourceServer.cer
    • SourceServer.pvk
    • TargetServer.cer
    • TargetServer.pvk
    • DlgSourceServer.cer
    • DlgSourceServer.pvk
    • DlgTargetServer.cer
    • DlgTargetServer.pvk
    Weitere Informationen zum Erstellen von Zertifikaten für Testzwecke finden Sie auf folgender Website des Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/bfsktky3(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/bfsktky3(vs.71).aspx)
  • Sie haben zwei Instanzen von SQL Server 2005 auf unterschiedlichen Servern im selben Netzwerk installiert. In diesem Beispiel wird davon ausgegangen, dass der erste Server "ServerSrc" und der zweite "ServerTag" heißt.
  • Sie verbinden sich mit den beiden Instanzen mit Benutzernamen, die Mitglieder der festen Serverrolle "sysadmin" sind.
  • Sie haben sichergestellt, dass der TCP-Port 4022 verfügbar ist. In diesem Beispiel wird der Port von beiden Instanzen verwendet, um sich miteinander zu verbinden.
Wenn alle vorstehenden Bedingungen erfüllt sind, gehen Sie folgendermaßen vor:

Konfigurieren von SQL Server 2005 Service Broker für die Instanz von SQL Server auf dem ServerSrc-Server

  1. Stellen Sie mit SQL Server Management Studio eine Verbindung zu der Instanz auf dem ServerSrc-Server her.
  2. Führen Sie folgende Transact-SQL-Anweisungen im Abfrage-Editor aus:
    --Configure the transport security.
    USE MASTER
    go
    
    --Create a master key in the master database.
    CREATE MASTER KEY ENCRYPTION BY password = 'MasterKeyPassword'
    Go
    
    --Create a certificate for transport security.
    CREATE CERTIFICATE ctfSourceServerMaster
    FROM FILE = 'C:\Certificates\SourceServer.cer'
    WITH PRIVATE KEY ( FILE = 'C:\Certificates\SourceServer.pvk' , DECRYPTION BY PASSWORD = 'PrivateKeyPassword' )
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create the login and the user to own a certificate.
    CREATE LOGIN remcert WITH PASSWORD = 'LoginPassword'
    GO
    CREATE USER remcert FOR LOGIN remcert
    GO
    CREATE CERTIFICATE ctftTargetServerMaster
    AUTHORIZATION remcert
    FROM FILE = 'C:\Certificates\TargetServer.cer'
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create a new endpoint for SQL Server 2005 Service Broker, and set the AUTHENTICATION option to use the ctfSourceServerMaster certificate.
    CREATE ENDPOINT BrokerEndpoint
    	STATE = STARTED
    	AS TCP
    	(
    		LISTENER_PORT = 4022
    	)
    	FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE ctfSourceServerMaster)
    GO
    
    --Grant the required permissions to the remcert login.
    GRANT CONNECT TO remcert
    GRANT CONNECT ON ENDPOINT::BrokerEndpoint to remcert
    GO
    
    --Create a new database for testing.
    CREATE DATABASE SourceDB
    GO
    USE SourceDB
    GO
    
    --Configure the dialog security.
    
    --Create a master key in the SourceDB database.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKeyPassword'
    
    --Create a certificate for the SourceDB database.
    CREATE CERTIFICATE ctfDlgSourceServer
    FROM FILE = 'C:\certificates\DlgSourceServer.cer'
    WITH PRIVATE KEY 
    (FILE='C:\certificates\DlgSourceServer.pvk',decryption by password='PrivateKeyPassword')
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create a user for the remcert login that owns a certificate for the dialog security.
    CREATE USER remcert for LOGIN remcert
    GO
    CREATE CERTIFICATE ctfDlgTargetServer
    AUTHORIZATION remcert
    FROM FILE = 'C:\certificates\DlgTargetServer.cer'
    ACTIVE FOR BEGIN_DIALOG = ON
    
    --Create a message type, a contract, a queue, and a service.
    
    CREATE MESSAGE TYPE [mymsg] VALIDATION = NONE 
    CREATE CONTRACT [mycon] ([mymsg] SENT BY ANY)
    CREATE QUEUE [myQueue]
    CREATE SERVICE [SourceService] ON QUEUE [myQueue]([mycon])
    GO
    
    --Grant the send permission to the user.
    GRANT SEND ON SERVICE::[SourceService] TO remcert
    
    --Create a remote service binding for the target service. 
    CREATE REMOTE SERVICE BINDING [Certificate_Binding_on_server]
       TO SERVICE 'TargetService'
       WITH  USER = remcert,
       ANONYMOUS=Off  
    
    --Create a route for the target service.
    CREATE ROUTE [myRoute]
        WITH 
        SERVICE_NAME = 'TargetService',
        address = 'TCP://ServerTag:4022';
    
    
    Hinweis: MasterKeyPassword ist ein Platzhalter für das Kennwort des Hauptschlüssels, das Sie für die Datenbank angeben müssen. PrivateKeyPassword ist ein Platzhalter für das Kennwort des privaten Schlüssels, das Sie für die private Schlüsseldatei (.pvk) mit dem Programm "Zertifikaterstellung" festgelegt haben. LoginPassword ist ein Platzhalter für das Kennwort des neu erstellten Benutzernamens.

Konfigurieren von SQL Server 2005 Service Broker für die Instanz von SQL Server auf dem ServerTag-Server

  1. Stellen Sie mit SQL Server Management Studio eine Verbindung zu der Instanz auf dem ServerTag-Server her.
  2. Führen Sie folgende Transact-SQL-Anweisungen im Abfrage-Editor aus:
    --Configure the transport security.
    USE MASTER
    go
    
    --Create a master key in the master database.
    CREATE MASTER KEY ENCRYPTION BY password = 'MasterKeyPassword'
    Go
    
    --Create a certificate for transport security.
    CREATE CERTIFICATE ctfTargetServerMaster
    FROM FILE = 'c:\certificates\TargetServer.cer'
    WITH PRIVATE KEY (FILE='c:\certificates\TargetServer.pvk',decryption by password='PrivateKeyPassword')
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create the login and the user to own a certificate.
    CREATE LOGIN remcert WITH PASSWORD = 'LoginPassword'
    GO
    CREATE USER remcert FOR LOGIN remcert
    GO
    CREATE CERTIFICATE ctfSourceServerMaster
    AUTHORIZATION remcert
    FROM FILE = 'c:\certificates\SourceServer.cer'
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create a new endpoint for SQL Server 2005 Service Broker, and set the AUTHENTICATION option to use the ctfSourceServerMaster certificate.
    CREATE ENDPOINT BrokerEndpoint
    	STATE = STARTED
    	AS TCP
    	(
    		LISTENER_PORT = 4022
    	)
    	FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE ctfTargetServerMaster)
    GO
    
    --Grant the required permissions to the remcert login.
    GRANT CONNECT TO remcert
    GRANT CONNECT ON ENDPOINT::BrokerEndpoint to remcert
    GO
    
    --Create a new database for testing.
    CREATE DATABASE TargetDB
    GO
    USE TargetDB
    GO
    
    --Configure the dialog security.
    
    --Create a master key in the TargetDB database.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKeyPassword'
    
    --Create a certificate for the TargetDB database.
    CREATE CERTIFICATE ctfDlgTargetServer
    FROM FILE = 'c:\certificates\DlgTargetServer.cer'
    WITH PRIVATE KEY 
    (FILE='c:\certificates\DlgTargetServer.pvk',decryption by password='PrivateKeyPassword')
    ACTIVE FOR BEGIN_DIALOG = ON
    GO
    
    --Create a user for the remcert login that owns a certificate for the dialog security.
    CREATE USER remcert for LOGIN remcert
    GO
    CREATE CERTIFICATE ctfDlgSourceServer
    AUTHORIZATION remcert
    FROM FILE = 'C:\certificates\DlgSourceServer.cer'
    ACTIVE FOR BEGIN_DIALOG = ON
    
    --Create a message type, a contract, a queue, and a service.
    CREATE MESSAGE TYPE [mymsg] VALIDATION = NONE 
    CREATE CONTRACT [mycon] ([mymsg] SENT BY ANY)
    CREATE QUEUE [myQueue]
    CREATE SERVICE [TargetService] ON QUEUE [myQueue]([mycon])
    GO
    
    --Grant the send permission to the user.
    GRANT SEND ON SERVICE::[TargetService] TO remcert
    GO
    
    --Create a remote service binding for the target service. 
    CREATE REMOTE SERVICE BINDING [Certificate_Binding_on_server]
       TO SERVICE 'SourceService'
       WITH  USER = remcert,
       ANONYMOUS=Off  
    --Create a route for the target service.
    CREATE ROUTE [myRoute]
        WITH 
        SERVICE_NAME = 'SourceService',
        address = 'TCP://ServerSrc:4022';

Testen der Remotesicherheit für SQL Server 2005 Service Broker

Nachdem Sie die beiden Instanzen konfiguriert haben, stellen Sie eine Verbindung zu der Instanz auf dem ServerSrc-Server her und führen Sie folgende Anweisungen aus, um den SQL Server 2005 Service Broker-Dienst zu testen:
USE SourceDB
SET NOCOUNT ON
DECLARE @conversationHandle uniqueidentifier
BEGIN TRANSACTION
	-- Start dialog.
	BEGIN DIALOG  @conversationHandle
	FROM SERVICE    [SourceService]
	TO SERVICE      'TargetService'
	ON CONTRACT     [mycon]
	WITH ENCRYPTION = ON, LIFETIME = 600;

	-- Send message.
	SEND ON CONVERSATION @conversationHandle 
	MESSAGE TYPE [mymsg] (N'Hi, from '+@@ServerName)
COMMIT
Nachdem Sie diese Anweisungen ausgeführt haben, stellen Sie eine Verbindung zu der Instanz auf dem ServerTag-Server her und führen Sie folgende Anweisungen aus:
SELECT CONVERT(NVARCHAR(MAX),message_body) FROM myQueue
GO
Sie erhalten folgendes Ergebnis:
Hi, from ServerSrc

Informationsquellen

Weitere Informationen zu SQL Server 2005 Service Broker finden Sie in den folgenden Themen der Onlinedokumentation zu SQL Server 2005:
  • Verwalten der Sicherheit (Service Broker)
  • Netzwerk- und Remotesicherheit
  • Service Broker-Dialogsicherheit
  • Festlegen des Dialogsicherheitstyps
  • Remotedienstbindungen

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Keywords: 
kbinfo kbexpertiseadvanced kbsql2005servicebroker KB915852
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.