ALTER CERTIFICATE (Transact-SQL)

Ändert den privaten Schlüssel, mit dem ein Zertifikat verschlüsselt wird, oder fügt einen privaten Schlüssel hinzu, falls keiner vorhanden ist. Ändert die Verfügbarkeit eines Zertifikats für Service Broker.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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' 
    |
    DECRYPTION BY PASSWORD = 'key_password' 
    |
    ENCRYPTION BY PASSWORD = 'password' 

Argumente

  • certificate_name
    Der eindeutige Name, unter dem das Zertifikat in der Datenbank bekannt ist.

  • 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, müssen Sie sicherstellen, dass das Dienstkonto Zugriff auf die angegebene Datei hat.

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

  • ENCRYPTION BY PASSWORD ='password'
    Legt das zum Verschlüsseln des privaten Zertifikatsschlüssels verwendete Kennwort in der Datenbank fest. 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 Kennwortrichtlinie.

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

  • 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.

Wenn der private Schlüssel eines Zertifikats, das bereits in der Datenbank vorhanden ist, aus einer Datei importiert wird, wird der private Schlüssel automatisch mit dem Datenbank-Hauptschlüssel geschützt. Verwenden Sie die ENCRYPTION BY PASSWORD-Klausel, 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. Dies ist möglich, 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.

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

Wichtiger HinweisWichtig

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).

Berechtigungen

Erfordert die ALTER-Berechtigung für das Zertifikat.

Beispiele

A. Ändern des Kennworts eines Zertifikats

ALTER CERTIFICATE Shipping04 
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'pGF$5DGvbd2439587y',
    ENCRYPTION BY PASSWORD = '4-329578thlkajdshglXCSgf');
GO

B. Ändern des Kennworts, mit dem der private Schlüssel verschlüsselt wird

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

C. Importieren eines privaten Schlüssels für ein in der Datenbank vorhandenes Zertifikat

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

D. Ändern des Schutzes des privaten Schlüssels von einem Kennwort zum Datenbank-Hauptschlüssel

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