Freigeben über


Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für die Datenbankspiegelung (Transact-SQL)

In diesem Thema werden die Schritte beschrieben, um Serverinstanzen so zu konfigurieren, dass bei der Datenbankspiegelung Zertifikate zur Authentifizierung von ausgehenden Verbindungen verwendet werden können. Die ausgehende Verbindung muss konfiguriert werden, bevor eingehende Verbindungen eingerichtet werden können.

HinweisHinweis

Alle Spiegelungsverbindungen auf einer Serverinstanz verwenden einen gemeinsamen Datenbank-Spiegelungsendpunkt. Sie müssen beim Erstellen dieses Endpunktes die Authentifizierungsmethode der Serverinstanz angeben.

Der Vorgang zum Konfigurieren der ausgehenden Verbindungen umfasst die folgenden allgemeinen Schritte:

  1. Erstellen eines Datenbankhauptschlüssels in der master-Datenbank

  2. Erstellen eines verschlüsselten Zertifikats für die Serverinstanz in der master-Datenbank

  3. Erstellen eines Endpunktes für die Serverinstanz mithilfe ihres Zertifikats

  4. Sichern des Zertifikats in einer Datei und sicheres Kopieren dieses Zertifikats zum anderen System bzw. zu den anderen Systemen

Diese Schritte müssen Sie für jeden Partner und ggf. den Zeugen ausführen.

Die folgende Prozedur beschreibt diese Schritte detailliert. Für jeden Schritt enthält die Prozedur ein Beispiel für das Konfigurieren einer Serverinstanz auf einem System namens HOST_A. Im zugehörigen Beispielabschnitt werden dieselben Schritte für eine andere Serverinstanz auf einem System namens HOST_B beschrieben.

Prozedur

So konfigurieren Sie Serverinstanzen für ausgehende Spiegelungsverbindungen (auf HOST_A)

  1. Erstellen Sie in der master-Datenbank den Datenbankhauptschlüssel, sofern noch keiner vorhanden ist. Zum Anzeigen der für eine Datenbank vorhandenen Schlüssel verwenden Sie die Katalogsicht sys.symmetric_keys.

    Zum Erstellen des Datenbankhauptschlüssels verwenden Sie den folgenden Transact-SQL-Befehl:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
    GO
    

    Verwenden Sie ein eindeutiges und aussagekräftiges Kennwort, und hinterlegen Sie es an einem sicheren Ort.

    Weitere Informationen finden Sie unter CREATE MASTER KEY (Transact-SQL) und Vorgehensweise: Erstellen eines Datenbank-Hauptschlüssels.

  2. Erstellen Sie in der master-Datenbank ein verschlüsseltes Zertifikat für die Serverinstanz, das für deren ausgehende Verbindungen zur Datenbankspiegelung verwendet werden soll.

    Um z. B. ein Zertifikat für das HOST_A-System zu erstellen:

    Wichtiger HinweisWichtig

    Wenn Sie beabsichtigen, das Zertifikat länger als ein Jahr zu verwenden, geben Sie das Ablaufdatum mithilfe der EXPIRY_DATE-Option in der CREATE CERTIFICATE-Anweisung in UTC-Zeit an. Außerdem wird empfohlen, dass Sie mithilfe von SQL Server Management Studio eine richtlinienbasierte Verwaltungsregel erstellen, die Sie warnt, wenn die Zertifikate ablaufen. Erstellen Sie mithilfe des Richtlinienverwaltungs-Dialogfelds Neue Bedingung erstellen diese Regel im Feld @ExpirationDate des Facets Zertifikat. Weitere Informationen finden Sie unter Verwalten von Servern mit der richtlinienbasierten Verwaltung, Lernprogramm: Verwalten von Servern mit der richtlinienbasierten Verwaltung und Sichern von SQL Server.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate for database mirroring', 
       EXPIRY_DATE = '11/30/2013';
    GO
    

    Weitere Informationen finden Sie unter CREATE CERTIFICATE (Transact-SQL).

    Zum Anzeigen der Zertifikate in der master-Datenbank können Sie die folgenden Transact-SQL-Anweisungen verwenden:

    USE master;
    SELECT * FROM sys.certificates;
    

    Weitere Informationen finden Sie unter sys.certificates (Transact-SQL).

  3. Stellen Sie sicher, dass der Datenbank-Spiegelungsendpunkt auf jeder Serverinstanz vorhanden ist.

    Wenn für die Serverinstanz bereits ein Datenbank-Spiegelungsendpunkt vorhanden ist, sollten Sie diesen Endpunkt für alle anderen Sitzungen verwenden, die Sie auf der Serverinstanz herstellen. Um festzustellen, ob auf einer Serverinstanz bereits ein Datenbank-Spiegelungsendpunkt vorhanden ist und um dessen Konfiguration anzuzeigen, verwenden Sie folgende Anweisung:

    SELECT name, role_desc, state_desc, connection_auth_desc, encryption_algorithm_desc 
       FROM sys.database_mirroring_endpoints;
    

    Wenn kein Endpunkt vorhanden ist, erstellen Sie einen Endpunkt, der dieses Zertifikat für ausgehende Verbindungen und für die Anmeldeinformationen des Zertifikats zur Überprüfung auf dem anderen System verwendet. Dies ist ein serverweiter Endpunkt, der von allen Spiegelungssitzungen verwendet wird, an denen die Serverinstanz beteiligt ist.

    So erstellen Sie beispielsweise einen Spiegelungsendpunkt für die Beispiel-Serverinstanz auf HOST_A:

    CREATE ENDPOINT Endpoint_Mirroring
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=7024
          , LISTENER_IP = ALL
       ) 
       FOR DATABASE_MIRRORING ( 
          AUTHENTICATION = CERTIFICATE HOST_A_cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    

    Weitere Informationen finden Sie unter CREATE ENDPOINT (Transact-SQL).

  4. Sichern Sie das Zertifikat, und kopieren Sie es zum anderen System bzw. zu den anderen Systemen. Das ist erforderlich, um eingehende Verbindungen auf dem anderen System zu konfigurieren.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
    GO
    

    Weitere Informationen finden Sie unter BACKUP CERTIFICATE (Transact-SQL).

    Kopieren Sie dieses Zertifikat mit einer sicheren Methode Ihrer Wahl. Seien Sie äußerst vorsichtig, um Ihre Zertifikate zu schützen.

Mit dem Beispielcode in den vorherigen Schritten werden ausgehende Verbindungen auf HOST_A konfiguriert.

Jetzt müssen Sie die entsprechenden Schritte für ausgehende Verbindungen auf HOST_B ausführen. Diese Schritte werden im folgenden Beispielabschnitt erläutert.

Beispiel

Das folgende Beispiel erläutert das Konfigurieren von HOST_B für ausgehende Verbindungen.

USE master;
--Create the database Master Key, if needed.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
GO
-- Make a certifcate on HOST_B server instance.
CREATE CERTIFICATE HOST_B_cert 
   WITH SUBJECT = 'HOST_B certificate for database mirroring', 
   EXPIRY_DATE = '11/30/2013';
GO
--Create a mirroring endpoint for the server instance on HOST_B.
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=7024
      , LISTENER_IP = ALL
   ) 
   FOR DATABASE_MIRRORING ( 
      AUTHENTICATION = CERTIFICATE HOST_B_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = ALL
   );
GO
--Backup HOST_B certificate.
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
GO 
--Using any secure copy method, copy C:\HOST_B_cert.cer to HOST_A.

Kopieren Sie das Zertifikat zum anderen System. Verwenden Sie dazu eine sichere Methode Ihrer Wahl. Seien Sie äußerst vorsichtig, um Ihre Zertifikate zu schützen.

Wichtiger HinweisWichtig

Nach dem Einrichten von ausgehenden Verbindungen müssen Sie eingehende Verbindungen auf jeder Serverinstanz für die andere Serverinstanz bzw. die anderen Serverinstanzen konfigurieren. Weitere Informationen finden Sie unter Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für eingehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

Weitere Informationen zum Erstellen einer Spiegeldatenbank, einschließlich eines Transact-SQL-Beispiels, finden Sie unter Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL).

Ein Transact-SQL-Beispiel zum Einrichten einer Sitzung im Modus für hohe Leistung finden Sie unter Beispiel: Einrichten der Datenbankspiegelung mithilfe von Zertifikaten (Transact-SQL).

Sicherheit

Sofern Sie nicht garantieren können, dass Ihr Netzwerk sicher ist, wird das Verschlüsseln bei Verbindungen zur Datenbankspiegelung empfohlen.

Verwenden Sie zum Kopieren eines Zertifikats zu einem anderen System eine sichere Kopiermethode.

Änderungsverlauf

Aktualisierter Inhalt

Hinweis zum Verwenden der EXPIRY_DATE-Option in der CREATE CERTIFICATE-Anweisungen hinzugefügt und Codebeispiele mithilfe der Option aktualisiert.