Tworzenie certyfikatu (Transact-SQL)

Dodaje certyfikat do bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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 = 'datetime' | EXPIRY_DATE = 'datetime'

Argumenty

  • certificate_name
    Jest to nazwa, za pomocą której certyfikat będzie znany w bazie danych.

  • AUTORYZACJAuser_name
    Jest to nazwa użytkownika, który będzie właścicielem tego certyfikat.

  • MONTAŻassembly_name
    Określa podpisane wirtualny plik dziennika , który został już załadowany do bazy danych.

  • [PLIK WYKONYWALNY] FILE ='path_to_file'
    Określa pełną ścieżka, łącznie z nazwą pliku do pliku z algorytmem DER, który zawiera certyfikat.Jeżeli używana jest opcja pliku WYKONYWALNEGO, plik jest biblioteka DLL, która została podpisana przez certyfikat.path_to_filemoże to być lokalna ścieżka lub ścieżka UNC do lokalizacji sieciowej.Plik będzie dostępny w kontekście zabezpieczeń SQL Serverkontausługa . To konto musi mieć uprawnienia do wymaganego systemu plików.

  • ZA POMOCĄ KLUCZA PRYWATNEGO
    Określa, że prywatnego klucz certyfikat jest ładowany do SQL Server.Tej klauzula jest prawidłowy tylko w przypadku, gdy certyfikat jest tworzony z pliku.Aby załadować prywatnego klucz wirtualny plik dziennika, należy użyć Zmienić certyfikat.

  • FILE ='path_to_private_key'
    Określa pełną ścieżka, łącznie z nazwą pliku do kluczprywatnego.path_to_private_keymoże to być lokalna ścieżka lub ścieżka UNC do lokalizacji sieciowej.Plik będzie dostępny w kontekście zabezpieczeń SQL Serverkontausługa . To konto musi mieć uprawnienia konieczne systemu plików.

  • ODSZYFROWYWANIE HASŁA przez ='key_password"
    Określa hasło wymagane do odszyfrowania prywatny klucz , który jest pobierany z pliku.Ta klauzula jest opcjonalne, jeśli klucz prywatny jest chroniony null hasłem.Nie zaleca się zapisanie klucz prywatny w pliku bez ochrony hasłem.Jeśli wymagane jest hasło, ale hasło nie jest określony, instrukcja nie powiedzie się.

  • HASŁO szyfrowania przez ='password"
    Określa hasło, które będą używane do zaszyfrowania kluczprywatnego.Tej opcji należy używać tylko wtedy, gdy chcesz zaszyfrować certyfikat przy użyciu hasła.Pominięcie tej klauzula klucz prywatnego będą szyfrowane przy użyciu kluczgłównego bazy danych.passwordmusi spełniać wymogi zasady haseł systemu Windows komputer, na którym jest uruchomione wystąpienie SQL Server.Aby uzyskać więcej informacji, zobacz Zasady haseł.

  • PRZEDMIOTEM ="certificate_subject_name"
    Termin temat odwołuje się do pole w metadane certyfikat , określone w standardzie X.509.Podmiotem może być maksymalnie 128 znaków.Podmiotów mających więcej niż 128 znaków zostaną obcięte, gdy są przechowywane w katalogu, ale zachowuje Pełna nazwa duży obiekt binarny (BLOB), który zawiera certyfikat .

  • Data_początkowa ='datetime"
    Jest to data obowiązywania certyfikat .Jeśli nie określono data_początkowa będzie zestaw bieżącą data.Data_początkowa jest czas UTC i może być określony w dowolnym formacie, który można przekonwertować na data i czas.

  • EXPIRY_DATE ='datetime"
    To data wygaśnięcia certyfikat .Jeśli nie określono EXPIRY_DATE będzie zestaw data jeden rok po dacie data_początkowa.EXPIRY_DATE w czas UTC i może być określony w dowolnym formacie, który można przekonwertować na data i czas.SQL Server Service Broker kontrole wygaśnięcia data; Jednakże wygaśnięcia nie są wymuszane, gdy certyfikat jest używany do szyfrowanie.

  • ACTIVE FOR BEGIN_DIALOG = { na | OFF}
    Tworzy certyfikat do inicjatora z Service Broker oknach konwersacji.Wartością domyślną jest włączone.

Uwagi

certyfikat jest baza danych —poziomzabezpieczany następuje X.509 standard i obsługuje pola X.509 w wersji 1. Tworzenie certyfikatu można załadować certyfikat z pliku lub wirtualny plik dziennika.Ta instrukcja można również wygenerowanie pary klucz i utworzyć certyfikatz podpisem własnym.

Klucze prywatne generowanych przez SQL Server są 1024 bity long.Klucze prywatne, przywożone z zewnętrznego źródło mają minimalną długość 384 bitów i maksymalną długość 3,456 bitów.Długość zaimportowany klucz prywatny musi być całkowitą wielokrotnością 64 bity.

klucz prywatny musi odpowiadać publicznego klucz określonym przez certificate_name.

Po utworzeniu certyfikat z kontenerładowania klucz prywatny jest opcjonalne.Jednak po SQL Server generuje podpisany certyfikat, zawsze jest tworzony klucz prywatny.Domyślnie klucz prywatny jest szyfrowana przy użyciu kluczgłównego bazy danych.Jeśli klucz główny bazy danych nie istnieje hasło nie jest określony, instrukcja nie powiedzie się.

Opcja szyfrowania przez hasło nie jest wymagane, gdy klucz prywatny będzie zaszyfrowane przy użyciu kluczgłównego bazy danych.Użyj tej opcji tylko wtedy, gdy klucz prywatny będą szyfrowane przy użyciu hasła.Jeśli hasło nie zostanie określony, prywatnego klucz certyfikat będą szyfrowane przy użyciu kluczgłównego bazy danych.Pominięcie tej klauzula spowoduje błąd, jeśli nie można otworzyć główny klucz bazy danych.

Nie trzeba podać hasło odszyfrowywania, gdy klucz prywatny jest szyfrowany przy użyciu kluczgłównego bazy danych.

Ostrzeżenie

Wbudowane funkcje szyfrowanie i podpisywania nie sprawdzaj daty wygaśnięcia certyfikatów.Użytkownicy tych funkcji należy zdecydować, kiedy sprawdzenie ważności certyfikat .

Uprawnienia

Wymaga uprawnienia Tworzenie certyfikatu do bazy danych.Tylko logowania systemu Windows, SQL Server logowania do i z ról aplikacji mogą być właścicielami certyfikaty.Certyfikaty nie może należeć do grupy i role.

Przykłady

A.Tworzenie certyfikatz podpisem własnym

Poniższy przykład tworzy certyfikat o nazwie Shipping04.klucz prywatny tego certyfikat jest zabezpieczony za pomocą hasła.

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

B.Tworzenie certyfikat z pliku

Poniższy przykład tworzy certyfikat w bazie danych, ładowanie para klucz z plików.

USE AdventureWorks2008R2;
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.Tworzenie certyfikat z podpisanego pliku wykonywalnego

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

Alternatywnie można utworzyć wirtualny plik dziennika z dll pliku, a następnie utwórz certyfikat z wirtualny plik dziennika.

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