Freigeben über


CREATE CERTIFICATE (Transact-SQL)

Fügt einer Datenbank ein Zertifikat hinzu.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CREATE CERTIFICATE certificate_name [ AUTHORIZATION user_name ] 
    { FROM <existing_keys> | <generate_new_keys> }
    [ ACTIVE FOR BEGIN_DIALOG =  { ON | OFF } ]
        
<existing_keys> ::= 
    ASSEMBLY assembly_name
    | { 
        [ EXECUTABLE ] FILE = 'path_to_file'
        [ WITH PRIVATE KEY ( <private_key_options> ) ] 
      }
        
<generate_new_keys> ::= 
    [ ENCRYPTION BY PASSWORD = 'password'] 
    WITH SUBJECT = 'certificate_subject_name' 
    [ , <date_options> [ ,...n ] ] 

<private_key_options> ::=
    FILE = 'path_to_private_key'
    [ , DECRYPTION BY PASSWORD = 'password' ]
    [ , ENCRYPTION BY PASSWORD = 'password' ]  

<date_options> ::=
    START_DATE = 'mm/dd/yyyy' | EXPIRY_DATE = 'mm/dd/yyyy'

Argumente

  • certificate_name
    Der Name des Zertifikats in der Datenbank.
  • AUTHORIZATION user_name
    Der Name des Benutzers, der das Zertifikat besitzen wird.
  • ASSEMBLY assembly_name
    Gibt eine signierte Assembly an, die bereits in die Datenbank geladen wurde.
  • [ EXECUTABLE ] FILE ='path_to_file'
    Gibt den vollständigen Pfad einschließlich des Dateinamens zur DER-codierten Datei an, die das Zertifikat enthält. Falls die EXECUTABLE-Option verwendet wird, handelt es sich bei der Datei um eine DLL-Datei, die mit dem Zertifikat signiert wurde. path_to_file kann ein lokaler Pfad oder ein UNC-Pfad zu einem Netzwerkspeicherort sein. Die Datei wird im Sicherheitskontext des SQL Server-Dienstkontos ausgeführt. Dieses Konto muss über die erforderlichen Dateisystemberechtigungen verfügen.
  • WITH PRIVATE KEY
    Die PRIVATE KEY-Klausel gibt an, dass der private Schlüssel des Zertifikats in SQL Server geladen wird. Diese Klausel ist nur gültig, wenn das Zertifikat aus einer Datei erstellt wird. Zum Laden des privaten Schlüssels einer Assembly können Sie ALTER CERTIFICATE verwenden.
  • FILE ='path_to_private_key'
    Gibt den vollständigen Pfad einschließlich des Dateinamens zum privaten Schlüssel an. path_to_private_key kann ein lokaler Pfad oder ein UNC-Pfad zu einem Netzwerkspeicherort sein. Die Datei wird im Sicherheitskontext des SQL Server-Dienstkontos ausgeführt. Dieses Konto muss über die erforderlichen Dateisystemberechtigungen verfügen.
  • DECRYPTION BY PASSWORD = 'key_password'
    Gibt das Kennwort an, das zum Entschlüsseln eines privaten Schlüssels erforderlich ist, der aus einer Datei abgerufen wird. Diese Klausel ist optional, wenn der private Schlüssel nicht durch ein Kennwort geschützt ist. Das Speichern eines privaten Schlüssels in einer Datei ohne Kennwortschutz wird nicht empfohlen. Falls ein Kennwort erforderlich, nicht jedoch angegeben ist, erzeugt die Anweisung einen Fehler.
  • ENCRYPTION BY PASSWORD ='password'
    Gibt das Kennwort an, mit dem der private Schlüssel verschlüsselt wird. Verwenden Sie diese Option nur, wenn Sie das Zertifikat mit einem Kennwort verschlüsseln möchten. Falls diese Klausel ausgelassen wird, wird der private Schlüssel mit dem Datenbank-Hauptschlüssel verschlüsselt. Das Kennwort muss der Richtlinie für die Kennwortkomplexität entsprechen. Weitere Informationen finden Sie unter Kennwortrichtlinie.
  • SUBJECT = 'certificate_subject_name'
    Der Begriff Antragsteller (subject) bezieht sich auf ein Feld in den Metadaten des Zertifikats, wie es im X.509-Standard definiert ist. Der Name des Antragstellers kann bis zu 128 Zeichen lang sein. Ein Antragsteller, dessen Name länger als 128 Zeichen ist, wird gekürzt, wenn er im Katalog gespeichert wird. In den BLOB-Daten (Binary Large Object), die das Zertifikat enthalten, bleibt jedoch der vollständige Name des Antragstellers erhalten.
  • START_DATE ='mm/dd/yyyy'
    Das Datum, an dem das Zertifikat gültig wird. Falls nichts angegeben ist, wird das aktuelle Datum für START_DATE festgelegt.
  • EXPIRY_DATE ='mm/dd/yyyy'
    Das Datum, an dem das Zertifikat abläuft. Falls nichts angegeben ist, wird EXPIRY_DATE auf das Datum ein Jahr nach START_DATE festgelegt.
  • ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
    Stellt das Zertifikat für den Initiator einer Service Broker-Dialogkonversation bereit. Der Standardwert ist ON.

Hinweise

Ein Zertifikat ist ein sicherungsfähiges Element auf Datenbankebene, das dem X.509-Standard entspricht und X.509 V1-Felder unterstützt. CREATE CERTIFICATE kann ein Zertifikat aus einer Datei oder Assembly laden. Mit dieser Anweisung kann auch ein Schlüsselpaar generiert und ein selbstsigniertes Zertifikat erstellt werden.

Private von SQL Server generierte Schlüssel sind 1024 Bits lang. Private Schlüssel, die von einer externen Quelle importiert werden, haben eine minimale Länge von 384 Bits und eine maximale Länge von 3.456 Bits. Die Länge eines importierten privaten Schlüssels muss ein ganzzahliges Produkt von 64 Bits sein.

Der private Schlüssel muss dem in certificate_name angegebenen öffentlichen Schlüssel entsprechen.

Beim Erstellen eines Zertifikats aus einem Container ist das Laden des privaten Schlüssels optional. Wenn von SQL Server jedoch ein selbstsigniertes Zertifikat generiert wird, wird der private Schlüssel immer erstellt. Standardmäßig ist der private Schlüssel mit dem Datenbank-Hauptschlüssel verschlüsselt. Falls kein Datenbank-Hauptschlüssel vorhanden und kein Kennwort angegeben ist, erzeugt die Anweisung einen Fehler.

Die ENCRYPTION BY PASSWORD-Option ist nicht erforderlich, wenn der private Schlüssel mit dem Datenbank-Hauptschlüssel verschlüsselt wird. Verwenden Sie diese Option nur, wenn der private Schlüssel mit einem Kennwort verschlüsselt wird. Falls kein Kennwort angegeben ist, wird der private Schlüssel des Zertifikats mit dem Datenbank-Hauptschlüssel verschlüsselt. Wird diese Klausel ausgelassen, führt dies zu einem Fehler, wenn der Hauptschlüssel der Datenbank nicht geöffnet werden kann.

Sie müssen kein Entschlüsselungskennwort angeben, wenn der private Schlüssel mit dem Datenbank-Hauptschlüssel verschlüsselt ist.

ms187798.note(de-de,SQL.90).gifHinweis:
Die Ablaufdaten von Zertifikaten werden von integrierten Funktionen für die Verschlüsselung und Signierung nicht überprüft. Benutzer dieser Funktionen müssen entscheiden, wann die Ablaufdaten der Zertifikate überprüft werden sollen.

Mit den Argumenten START_DATE und EXPIRY_DATE ist es nicht möglich, Zeitangaben für diese Datumswerte anzugeben. Sie können jedoch die von SQL Server bereitgestellten Datums- und Uhrzeitfunktionen verwenden, um dem Start- und Ablaufdatum bestimmte Uhrzeitangaben hinzuzufügen. Weitere Informationen finden Sie in den folgenden Hilfethemen:

Berechtigungen

Erfordert die CREATE CERTIFICATE-Berechtigung für die Datenbank.

Beispiele

A. Erstellen eines selbstsignierten Zertifikats

Im folgenden Beispiel wird ein Zertifikat namens Shipping04 erstellt. Der private Schlüssel dieses Zertifikats wird mit einem Kennwort geschützt.

USE AdventureWorks;
CREATE CERTIFICATE Shipping04 
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
   WITH SUBJECT = 'Sammamish Shipping Records', 
   EXPIRY_DATE = '10/31/2009';
GO

B. Erstellen eines Zertifikats aus einer Datei

Im folgenden Beispiel wird ein Zertifikat in der Datenbank erstellt, wobei das Schlüsselpaar aus Dateien geladen wird.

USE AdventureWorks;
CREATE CERTIFICATE Shipping11 
    FROM FILE = 'c:\Shipping\Certs\Shipping11.cer' 
    WITH PRIVATE KEY (FILE = 'c:\Shipping\Certs\Shipping11.pvk', 
    DECRYPTION BY PASSWORD = 'sldkflk34et6gs%53#v00');
GO 

C. Erstellen eines Zertifikats aus einer signierten ausführbaren Datei

USE AdventureWorks;
CREATE CERTIFICATE Shipping19 
    FROM EXECUTABLE FILE = 'c:\Shipping\Certs\Shipping19.dll';
GO

Alternativ können Sie eine Assembly aus der dll-Datei erstellen und anschließend ein Zertifikat aus der Assembly erstellen.

USE AdventureWorks;
CREATE ASSEMBLY Shipping19 
    FROM ' c:\Shipping\Certs\Shipping19.dll' 
    WITH PERMISSION_SET = SAFE;
GO
CREATE CERTIFICATE Shipping19 FROM ASSEMBLY Shipping19;
GO

Siehe auch

Verweis

ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
EVENTDATA (Transact-SQL)

Andere Ressourcen

Verschlüsselungshierarchie

Hilfe und Informationen

Informationsquellen für SQL Server 2005