BACKUP CERTIFICATE (Transact-SQL)

Gilt für:SQL ServerAnalytics Platform System (PDW)

Exportiert ein Zertifikat in eine Datei.

Hinweis

In SQL Server 2022 (16.x) können Zertifikate mit privaten Schlüsseln direkt in Dateien oder binären Blobs gesichert oder aus diesen wiederhergestellt werden, indem das PKCS#12- (mit öffentlichen Schlüsselpaaren) oder PFX-Format (privater Informationsaustausch) verwendet wird.

Das PKCS #12- oder PFX-Format ist ein Binärformat zum Speichern des Serverzertifikats, aller Zwischenzertifikate und des privaten Schlüssels in einer Datei. PFX-Dateien weisen in der Regel Erweiterungen wie .pfx und .p12 auf. Dies erleichtert den Kunden die Einhaltung der aktuellen Sicherheitsrichtlinien und Konformitätsstandards, die eine RC4-Verschlüsselung untersagen, da der Einsatz von Konvertierungstools wie PVKConverter (für das PVK- oder DER-Format) nicht mehr erforderlich ist.

Transact-SQL-Syntaxkonventionen

Syntax

-- Syntax for SQL Server  
  
BACKUP CERTIFICATE certname TO FILE = 'path_to_file'  
    [ WITH
      [FORMAT = 'PFX',]
      PRIVATE KEY   
      (   
        FILE = 'path_to_private_key_file' ,  
        ENCRYPTION BY PASSWORD = 'encryption_password'   
        [ , DECRYPTION BY PASSWORD = 'decryption_password' ]   
      )   
    ]  
-- Syntax for Parallel Data Warehouse  
  
BACKUP CERTIFICATE certname TO FILE ='path_to_file'  
      WITH PRIVATE KEY   
      (   
        FILE ='path_to_private_key_file',  
        ENCRYPTION BY PASSWORD ='encryption_password'   
      )   

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

certname
Der Name des Zertifikats, das gesichert werden soll.

TO FILE = 'path_to_file'
Gibt den vollständigen Pfad einschließlich des Dateinamens zu der Datei an, in der das Zertifikat gespeichert werden soll. Dieser Pfad kann ein lokaler Pfad oder ein UNC-Pfad zu einer Netzwerkadresse sein. Wenn Sie lediglich einen Dateinamen angeben, wird die Datei im Standardordner für Benutzerdaten der Instanz gespeichert (dies kann der DATA-Ordner von SQL Server sein, ist aber nicht unbedingt der Fall). Für SQL Server Express LocalDB entspricht der standardmäßige Benutzerdatenordner der Instanz dem von der Umgebungsvariable %USERPROFILE% angegebenen Pfad für das Konto, das die Instanz erstellt hat.

WITH FORMAT = 'PFX'
Gilt für: SQL Server 2022 (16.x) und höher
Gibt an, dass ein Zertifikat und der zugehörige private Schlüssel in eine PFX-Datei exportiert werden. Diese Klausel ist optional.

WITH PRIVATE KEY gibt an, dass der private Schlüssel des Zertifikats in einer Datei gespeichert werden muss. Diese Klausel ist optional.

FILE = 'path_to_private_key_file'
Gibt den vollständigen Pfad einschließlich des Dateinamens zu der Datei an, in der der private Schlüssel gespeichert werden soll. Dieser Pfad kann ein lokaler Pfad oder ein UNC-Pfad zu einer Netzwerkadresse sein. Wenn Sie lediglich einen Dateinamen angeben, wird die Datei im Standardordner für Benutzerdaten der Instanz gespeichert (dies kann der DATA-Ordner von SQL Server sein, ist aber nicht unbedingt der Fall). Für SQL Server Express LocalDB entspricht der standardmäßige Benutzerdatenordner der Instanz dem von der Umgebungsvariable %USERPROFILE% angegebenen Pfad für das Konto, das die Instanz erstellt hat.

ENCRYPTION BY PASSWORD = 'encryption_password'
Das Kennwort, das zum Verschlüsseln des privaten Schlüssels verwendet wird, bevor der Schlüssel in die Sicherungsdatei geschrieben wird. Das Kennwort unterliegt Komplexitätsüberprüfungen.

DECRYPTION BY PASSWORD = 'decryption_password'
Das Kennwort, das zum Entschlüsseln des privaten Schlüssels verwendet wird, bevor der Schlüssel gesichert wird. Dieses Argument ist nicht erforderlich, wenn das Zertifikat mit dem Hauptschlüssel verschlüsselt wurde.

Hinweise

Falls der private Schlüssel mit einem Kennwort in der Datenbank verschlüsselt wird, muss das Kennwort für die Entschlüsselung angegeben werden.

Bei der Sicherung des privaten Schlüssels in einer Datei ist eine Verschlüsselung erforderlich. Das Kennwort, das zum Schutz des privaten Schlüssels in der Datei verwendet wird, ist nicht identisch mit dem Kennwort, das zum Verschlüsseln des privaten Schlüssels des Zertifikats in der Datenbank verwendet wird.

Private Schlüssel werden im PVK-Dateiformat gespeichert.

Verwenden Sie zum Wiederherstellen eines gesicherten Zertifikats mit oder ohne privatem Schlüssel die CREATE CERTIFICATE-Anweisung.

Verwenden Sie zum Wiederherstellen eines privaten Schlüssels in einem vorhandenen Zertifikat in der Datenbank die ALTER CERTIFICATE-Anweisung.

Bei einer Sicherung werden die Dateien für das Dienstkonto der SQL Server-Instanz der ACL hinzugefügt. Wenn Sie das Zertifikat auf einem Server wiederherstellen müssen, der mit einem anderen Konto ausgeführt wird, müssen Sie die Berechtigungen für die Dateien so anpassen, dass sie vom neuen Konto gelesen werden können.

Berechtigungen

Erfordert die CONTROL-Berechtigung für das Zertifikat und die Kenntnis des Kennworts, das zum Verschlüsseln des privaten Schlüssels verwendet wurde. Falls nur der öffentliche Teil des Zertifikats gesichert wird, sind bei diesem Befehl bestimmte Berechtigungen für das Zertifikat erforderlich, und dem Aufrufer darf die VIEW-Berechtigung für das Zertifikat nicht verweigert worden sein.

Beispiele

A. Exportieren eines Zertifikats in eine Datei

Im folgenden Beispiel wird ein Zertifikat in eine Datei exportiert.

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert';  
GO  

B. Exportieren eines Zertifikats und eines privaten Schlüssels

Im folgenden Beispiel wird der private Schlüssel des zu sichernden Zertifikats mit dem Kennwort 997jkhUbhk$w4ez0876hKHJH5gh verschlüsselt.

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert'  
    WITH PRIVATE KEY ( FILE = 'c:\storedkeys\sales05key' ,   
    ENCRYPTION BY PASSWORD = '997jkhUbhk$w4ez0876hKHJH5gh' );  
GO  

C. Exportieren eines Zertifikats mit einem verschlüsselten privaten Schlüssel

Im folgenden Beispiel ist der private Schlüssel des Zertifikats in der Datenbank verschlüsselt. Der private Schlüssel muss mit dem Kennwort 9875t6#6rfid7vble7r entschlüsselt werden. Beim Speichern des Zertifikats in der Sicherungsdatei wird der private Schlüssel mit dem Kennwort 9n34khUbhk$w4ecJH5gh verschlüsselt.

BACKUP CERTIFICATE sales09 TO FILE = 'c:\storedcerts\sales09cert'   
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = '9875t6#6rfid7vble7r' ,  
    FILE = 'c:\storedkeys\sales09key' ,   
    ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh' );  
GO  

D: Exportieren eines Zertifikats und des zugehörigen privaten Schlüssels in eine PFX-Datei

BACKUP CERTIFICATE Shipping04 TO FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH  
    FORMAT = 'PFX',  
    PRIVATE KEY ( 
ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh',  
ALGORITHM = 'AES_256'
    )

Siehe auch

CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)