ALTER CERTIFICATE (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAnalytics Platform System (PDW)

Ändert das Kennwort für die Verschlüsselung des privaten Schlüssels eines Zertifikats, entfernt den privaten Schlüssel oder importiert den privaten Schlüssel, falls dieser nicht vorhanden ist. Ändert die Verfügbarkeit eines Zertifikats für Service Broker.

Transact-SQL-Syntaxkonventionen

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
ALTER CERTIFICATE certificate_name   
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY ( <private_key_spec> )  
    | WITH ACTIVE FOR BEGIN_DIALOG = { ON | OFF }  
  
<private_key_spec> ::=   
      {   
        { FILE = 'path_to_private_key' | BINARY = private_key_bits }  
         [ , DECRYPTION BY PASSWORD = 'current_password' ]  
         [ , ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
    |  
      {  
         [ DECRYPTION BY PASSWORD = 'current_password' ]  
         [ [ , ] ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
-- Syntax for Parallel Data Warehouse  
  
ALTER CERTIFICATE certificate_name   
{  
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY (   
        FILE = '<path_to_private_key>',  
        DECRYPTION BY PASSWORD = '<key 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

certificate_name
Der eindeutige Name des Zertifikats in der Datenbank.

REMOVE PRIVATE KEY
Gibt an, dass der private Schlüssel nicht mehr in der Datenbank verwaltet werden soll.

WITH PRIVATE KEY: Gibt an, dass der private Schlüssel des Zertifikats in SQL Server geladen wird.

FILE ='path_to_private_key'
Gibt den vollständigen Pfad einschließlich des Dateinamens für den privaten Schlüssel an. Dieser Parameter kann ein lokaler Pfad oder ein UNC-Pfad zu einem Netzwerkspeicherort sein. Auf diese Datei wird im Sicherheitskontext des SQL Server-Dienstkontos zugegriffen. Wenn Sie diese Option verwenden, stellen Sie sicher, dass das Dienstkonto Zugriff auf die angegebene Datei hat.

Wird nur ein Dateiname angegeben, wird die Datei in den Standardordner für Benutzerdaten für die Instanz gespeichert. Bei diesem Ordner kann es sich (muss aber nicht) um den Ordner „SQL Server DATA“ handeln. Für SQL Server Express LocalDB entspricht der Standardordner für Benutzerdaten für die Instanz dem von der Umgebungsvariable %USERPROFILE% angegebenen Pfad für das Konto, mit dem die Instanz erstellt wurde.

BINARY = 'private_key_bits'
Gilt für: SQL Server 2012 (11.x) und höher.

Private Schlüsselbits, die als binäre Konstante angegeben sind. Diese Bits können in verschlüsselter Form vorhanden sein. Bei Verschlüsselung muss der Benutzer ein Entschlüsselungskennwort bereitstellen. Kennwortrichtlinienüberprüfungen werden für dieses Kennwort nicht ausgeführt. Die privaten Schlüsselbits müssen in einem PVK-Dateiformat vorliegen.

DECRYPTION BY PASSWORD = 'current_password'
Gibt das zum Entschlüsseln des privaten Schlüssels erforderliche Kennwort an.

ENCRYPTION BY PASSWORD = 'new_password'
Gibt das Kennwort an, mit dem der private Schlüssel des Zertifikats in der Datenbank verschlüsselt wird. new_password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL Server ausgeführt wird. Weitere Informationen finden Sie unter Password Policy.

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Stellt das Zertifikat für den Initiator einer Service Broker-Dialogkonversation zur Verfügung.

Hinweise

Der private Schlüssel muss dem öffentlichen Schlüssel entsprechen, der mit certificate_name angegeben ist.

Die DECRYPTION BY PASSWORD-Klausel kann ausgelassen werden, falls das Kennwort in der Datei mit einem NULL-Kennwort geschützt ist.

Ein privater Zertifikatsschlüssel, der bereits in der Datenbank vorhanden ist, wird beim Importieren automatisch durch den Datenbank-Hauptschlüssel geschützt. Verwenden Sie die Klausel „ENCRYPTION BY PASSWORD“, um den privaten Schlüssel mit einem Kennwort zu schützen.

Mit der Option REMOVE PRIVATE KEY wird der private Schlüssel des Zertifikats aus der Datenbank gelöscht. Sie können den privaten Schlüssel entfernen, wenn das Zertifikat zum Überprüfen von Signaturen oder für Service Broker-Szenarien, die keinen privaten Schlüssel erfordern, verwendet wird. Den privaten Schlüssel eines Zertifikats, das einen symmetrischen Schlüssel schützt, dürfen Sie nicht entfernen. Der private Schlüssel muss wiederhergestellt werden, wenn Sie zusätzliche Module oder Zeichenfolgen, die mit dem Zertifikat überprüft werden sollen, signieren oder einen mit dem Zertifikat verschlüsselten Wert entschlüsseln möchten.

Sie müssen kein Entschlüsselungskennwort angeben, wenn der private Schlüssel mithilfe des Datenbank-Hauptschlüssels verschlüsselt wird.

Wenn Sie das Kennwort für die Verschlüsselung des privaten Schlüssels ändern möchten, geben Sie weder die FILE- noch die BINARY-Klausel an.

Wichtig

Erstellen Sie immer eine Archivierungskopie eines privaten Schlüssels, bevor Sie ihn aus einer Datenbank entfernen. Weitere Informationen finden Sie unter BACKUP CERTIFICATE (Transact-SQL) sowie unter CERTPRIVATEKEY (Transact-SQL).

Die Option WITH PRIVATE KEY ist in einer enthaltenen Datenbank nicht verfügbar.

Berechtigungen

Erfordert die ALTER-Berechtigung für das Zertifikat.

Beispiele

A. Entfernen des privaten Schlüssels eines Zertifikats

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Ändern des Kennworts, das zum Verschlüsseln des privaten Schlüssels verwendet wird

ALTER CERTIFICATE Shipping11   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hkjdskghFDGGG4%',  
    ENCRYPTION BY PASSWORD = '34958tosdgfkh##38');  
GO  

C. Importieren eines privaten Schlüssels für ein Zertifikat, das bereits in der Datenbank vorhanden ist

ALTER CERTIFICATE Shipping13   
    WITH PRIVATE KEY (FILE = 'c:\importedkeys\Shipping13',  
    DECRYPTION BY PASSWORD = 'GDFLKl8^^GGG4000%');  
GO  

D: Ändern des Schutzes für den privaten Schlüssel von einem Kennwort in den Datenbank-Hauptschlüssel

ALTER CERTIFICATE Shipping15   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hk000eEnvjkjy#F%');  
GO  

Siehe auch

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Verschlüsselungshierarchie
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)