Megosztás a következőn keresztül:


TANÚSÍTVÁNY LÉTREHOZÁSA (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

Tanúsítványt ad hozzá egy SQL Server-adatbázishoz.

Ez a funkció nem kompatibilis az adatbázis-exportálással a Data Tier Application Framework (DACFx) használatával. Exportálás előtt el kell dobnia az összes tanúsítványt.

Note

Az SQL Server 2022 -ben (16.x) a titkos kulcsokkal rendelkező tanúsítványok biztonsági mentésére vagy visszaállítására közvetlenül a nyilvános kulcspárok (PKCS) #12 vagy a személyes adatcsere (PFX) formátumának használatával lehet közvetlenül a fájlokból vagy bináris blobokból. Minden rendszer által létrehozott tanúsítvány minimális RSA-3072 erősségű az SQL Server 2022-ben (16.x).

A PKCS #12 vagy PFX formátum bináris formátum a kiszolgálótanúsítvány, a köztes tanúsítványok és a titkos kulcs tárolására egy fájlban. A PFX-fájlok általában olyan bővítményekkel rendelkeznek, mint a .pfx ..p12 Ez megkönnyíti az ügyfelek számára az RC4 titkosítást tiltó biztonsági ajánlott eljárásokra vonatkozó irányelvek és megfelelőségi szabványok betartását azáltal, hogy szükségtelenné teszi az olyan konverziós eszközök használatát, mint a PVKConverter (a PVK vagy a DER formátum esetében).

Transact-SQL szintaxis konvenciók

Note

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
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 [FORMAT = 'PFX',]
          PRIVATE KEY ( <private_key_options> ) ]   
      }  
    | {   
        BINARY = asn_encoded_certificate  
        [ 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' ]    
      }  
    |  
      {   
        BINARY = private_key_bits  
         [ , DECRYPTION BY PASSWORD = 'password' ]  
         [ , ENCRYPTION BY PASSWORD = 'password' ]    
      }  
  
<date_options> ::=  
    START_DATE = 'datetime' | EXPIRY_DATE = 'datetime'  
-- Syntax for Parallel Data Warehouse  
  
CREATE CERTIFICATE certificate_name   
    { <generate_new_keys> | FROM <existing_keys> }  
    [ ; ]  
  
<generate_new_keys> ::=   
    WITH SUBJECT = 'certificate_subject_name'   
    [ , <date_options> [ ,...n ] ]   
  
<existing_keys> ::=   
    {   
      FILE ='path_to_file'  
      WITH PRIVATE KEY   
         (   
           FILE = 'path_to_private_key'  
           , DECRYPTION BY PASSWORD ='password'   
         )  
    }  
  
<date_options> ::=  
    START_DATE ='datetime' | EXPIRY_DATE ='datetime'  

Arguments

certificate_name
Az adatbázis tanúsítványának neve.

ENGEDÉLYEZÉSI user_name
Annak a felhasználónak a neve, aki a tanúsítvány tulajdonosa.

GYŰLÉS assembly_name
Az adatbázisba már betöltött aláírt szerelvényt adja meg.

[ VÉGREHAJTHATÓ ] FILE = "path_to_file"
Megadja a tanúsítványt tartalmazó DER-kódolt fájl teljes elérési útját, beleértve a fájlnevet is. Ha a VÉGREHAJTHATÓ beállítást használja, a fájl egy DLL, amelyet a tanúsítvány aláírt. path_to_file lehet egy hálózati hely helyi elérési útja vagy UNC elérési útja. A fájl az SQL Server szolgáltatásfiók biztonsági környezetében érhető el. Ennek a fióknak rendelkeznie kell a szükséges fájlrendszer-engedélyekkel.

Important

Az Azure SQL Database nem támogatja a tanúsítvány fájlból vagy titkos kulcsfájlok használatával történő létrehozását.

BINÁRIS = asn_encoded_certificate
Bináris állandóként megadott ASN-kódolt tanúsítványbájtok.
A következővonatkozik: SQL Server 2012 (11.x) és újabb.

FORMÁTUMMAL = 'PFX'
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
A TANÚSÍTVÁNY PFX-fájlból való generálásának megadása. Ez a záradék nem kötelező.

TITKOS KULCCSAL
Megadja, hogy a tanúsítvány titkos kulcsa be legyen töltve az SQL Serverbe. Ez a záradék érvénytelen, ha a tanúsítvány szerelvényből jön létre. A szerelvényből létrehozott tanúsítvány titkos kulcsának betöltéséhez használja az ALTER CERTIFICATE parancsot.

FILE ='path_to_private_key'
Megadja a titkos kulcs teljes elérési útját, beleértve a fájlnevet is. path_to_private_key lehet egy hálózati hely helyi elérési útja vagy UNC elérési útja. A fájl az SQL Server szolgáltatásfiók biztonsági környezetében érhető el. Ennek a fióknak rendelkeznie kell a szükséges fájlrendszer-engedélyekkel.

Important

Ez a lehetőség nem érhető el egy tárolt adatbázisban vagy az Azure SQL Database-ben.

BINÁRIS = private_key_bits
A következőkre vonatkozik: SQL Server (SQL Server 2012 (11.x)) és Azure SQL Database.

Bináris állandóként megadott titkoskulcs-bitek. Ezek a bitek titkosított formában is lehetnek. Titkosítás esetén a felhasználónak meg kell adnia egy visszafejtési jelszót. A jelszóházirend-ellenőrzések nem ezen a jelszón lesznek végrehajtva. A titkos kulcs bitjeinek PVK fájlformátumban kell lenniük.

VISSZAFEJTÉS JELSZÓ ALAPJÁN = "key_password"
Megadja a fájlból lekért titkos kulcs visszafejtéséhez szükséges jelszót. Ez a záradék nem kötelező, ha a titkos kulcsot null jelszó védi. A titkos kulcsok jelszóvédelem nélküli mentése nem ajánlott. Ha jelszóra van szükség, de nincs megadva jelszó, az utasítás meghiúsul.

TITKOSÍTÁS JELSZÓ ALAPJÁN = "jelszó"
Megadja a titkos kulcs titkosításához használt jelszót. Ezt a lehetőséget csak akkor használja, ha jelszóval szeretné titkosítani a tanúsítványt. Ha ez a záradék nincs megadva, a titkos kulcs titkosítása az adatbázis főkulcsával történik. a jelszónak meg kell felelnie az SQL Server-példányt futtató számítógép Windows jelszóházirend-követelményeinek. További információ: Jelszóházirend.

SUBJECT = "certificate_subject_name"
A tárgy kifejezés a tanúsítvány metaadatainak egy mezőjére hivatkozik az X.509 szabványban meghatározottak szerint. A tárgy legfeljebb 64 karakter hosszúságú lehet, és ez a korlát a Linuxon futó SQL Server esetében érvényes. Windows SQL Server esetén a tárgy legfeljebb 128 karakter hosszú lehet. A katalógusban tárolt 128 karakternél hosszabb témákat csonkolja a rendszer, de a tanúsítványt tartalmazó bináris nagyméretű objektum (BLOB) megtartja a teljes tulajdonosnevet.

START_DATE = "datetime"
A tanúsítvány érvényességének dátuma. Ha nincs megadva, a START_DATE az aktuális dátummal egyenlő. START_DATE UTC-ben van megadva, és bármilyen formátumban megadható, amely dátummá és idővé alakítható.

EXPIRY_DATE = "datetime"
A tanúsítvány lejáratának dátuma. Ha nincs megadva, EXPIRY_DATE egy évvel a START_DATE után lesz beállítva. EXPIRY_DATE UTC-időpontban van megadva, és bármilyen formátumban megadható, amely dátummá és idővé alakítható. Az SQL Server Service Broker ellenőrzi a lejárati dátumot. A tanúsítványok használatával végzett titkosítással végzett biztonsági mentés a lejárati dátumot is ellenőrzi, és nem engedélyezi az új biztonsági másolat létrehozását lejárt tanúsítvánnyal, de engedélyezi a lejárt tanúsítvánnyal rendelkező visszaállításokat. A lejárat azonban nem érvényes, ha a tanúsítványt adatbázis-titkosításhoz vagy Always Encryptedhez használják.

ACTIVE FOR BEGIN_DIALOG = { ON | KI }
Elérhetővé teszi a tanúsítványt a Service Broker párbeszédpanel-beszélgetés kezdeményezője számára. Az alapértelmezett érték be van kapcsolva.

Remarks

A tanúsítvány egy adatbázisszintű biztonságos, amely az X.509 szabványt követi, és támogatja az X.509 V1 mezőket. CREATE CERTIFICATE A tanúsítvány fájlból, bináris állandóból vagy szerelvényből tölthető be. Ez az utasítás kulcspárt is létrehozhat, és önaláírt tanúsítványt is létrehozhat.

A titkos kulcsnak 2500 bájtnak kell lennie <titkosított formátumban. Az SQL Server által létrehozott titkos kulcsok 1024 bit hosszúak az SQL Server 2014-től (12.x) és 2048 bitesek az SQL Server 2016-tól kezdve (13.x). A külső forrásból importált titkos kulcsok minimális hossza 384 bit, maximális hossza 4096 bit. Az importált titkos kulcs hosszának 64 bites egész számnak kell lennie. A TDE-hez használt tanúsítványok 3456 bites titkos kulcsméretre korlátozódnak.

A rendszer a tanúsítvány teljes sorozatszámát tárolja, de csak az első 16 bájt jelenik meg a sys.certificates katalógusnézetben.

A rendszer a tanúsítvány teljes Kiállító mezőjét tárolja, de csak az első 884 bájtot a sys.certificates katalógusnézetben.

A titkos kulcsnak meg kell felelnie a certificate_name által megadott nyilvános kulcsnak.

Amikor tanúsítványt hoz létre egy tárolóból, a titkos kulcs betöltése nem kötelező. Ha azonban az SQL Server létrehoz egy önaláírt tanúsítványt, a titkos kulcs mindig létrejön. Alapértelmezés szerint a titkos kulcs titkosítása az adatbázis főkulcsával történik. Ha az adatbázis főkulcsa nem létezik, és nincs megadva jelszó, az utasítás meghiúsul.

A ENCRYPTION BY PASSWORD beállítás nem szükséges, ha a titkos kulcs az adatbázis fő kulccsal van titkosítva. Ezt a lehetőséget csak akkor használja, ha a titkos kulcs jelszóval van titkosítva. Ha nincs megadva jelszó, a tanúsítvány titkos kulcsa az adatbázis főkulcsával lesz titkosítva. Ha az adatbázis főkulcsa nem nyitható meg, a záradék kihagyása hibát okoz.

Nem kell visszafejtési jelszót megadnia, ha a titkos kulcs az adatbázis főkulcsával van titkosítva.

Note

A titkosításhoz és aláíráshoz használt beépített függvények nem ellenőrzik a tanúsítványok lejárati dátumát. A függvények felhasználóinak el kell dönteniük, hogy mikor ellenőrzik a tanúsítvány lejáratát.

A tanúsítvány bináris leírása a CERTENCODED (Transact-SQL) és a CERTPRIVATEKEY (Transact-SQL) függvény használatával hozható létre. Ha például a TANÚSÍTVÁNYTPRIVATEKEY és a CERTENCODED használatával másolni szeretne egy tanúsítványt egy másik adatbázisba, tekintse meg a B példát a CERTENCODED (Transact-SQL) című cikkben.

Az MD2, MD4, MD5, SHA és SHA1 algoritmusok elavultak az SQL Server 2016-ban (13.x). Az SQL Server 2016-ig (13.x) önaláírt tanúsítvány jön létre az SHA1 használatával. Az SQL Server 2017 -től kezdve (14.x) önaláírt tanúsítvány jön létre SHA2_256 használatával.

Permissions

Az adatbázishoz CREATE CERTIFICATE engedély szükséges. Csak Windows-bejelentkezések, SQL Server-bejelentkezések és alkalmazásszerepkörök birtokolhatnak tanúsítványokat. A csoportok és szerepkörök nem birtokolhatnak tanúsítványokat.

Examples

A. Önaláírt tanúsítvány létrehozása

Az alábbi példa létrehoz egy tanúsítványt.Shipping04 A tanúsítvány titkos kulcsa jelszóval védett.

CREATE CERTIFICATE Shipping04   
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'  
   WITH SUBJECT = 'Sammamish Shipping Records',   
   EXPIRY_DATE = '20201031';  
GO  

B. Tanúsítvány létrehozása fájlból

Az alábbi példa létrehoz egy tanúsítványt az adatbázisban, amely betölti a kulcspárt a fájlokból.

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   

Important

Az Azure SQL Database nem támogatja a tanúsítvány fájlból való létrehozását.

C. Tanúsítvány létrehozása aláírt végrehajtható fájlból

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

Másik lehetőségként létrehozhat egy szerelvényt a dll fájlból, majd létrehozhat egy tanúsítványt a szerelvényből.

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

Important

Az Azure SQL Database nem támogatja a tanúsítvány fájlból való létrehozását.

Important

Az SQL Server 2017 -től (14.x) kezdődően a "CLR szigorú biztonsági" kiszolgálókonfigurációs lehetőség megakadályozza a szerelvények betöltését anélkül, hogy először beállítanák a biztonsági beállításokat. Töltse be a tanúsítványt, hozzon létre belőle egy bejelentkezést, adja meg UNSAFE ASSEMBLY a bejelentkezést, majd töltse be a szerelvényt.

D. Önaláírt tanúsítvány létrehozása

Az alábbi példa titkosítási jelszó megadása nélkül hoz létre egy tanúsítványt Shipping04 . Ez a példa az Analytics Platform System (PDW) használatával használható.

CREATE CERTIFICATE Shipping04   
   WITH SUBJECT = 'Sammamish Shipping Records';  
GO  

E. Tanúsítvány létrehozása PFX-fájlból

CREATE CERTIFICATE Shipping04
    FROM FILE = 'c:\storedcerts\shipping04cert.pfx'
    WITH 
    FORMAT = 'PFX', 
	PRIVATE KEY (
        DECRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh'
	);  

Lásd még:

MÓDOSÍTÁSI TANÚSÍTVÁNY (Transact-SQL)
LEENGEDŐ TANÚSÍTVÁNY (Transact-SQL)
BIZTONSÁGI MENTÉSI TANÚSÍTVÁNY (Transact-SQL)
Titkosítási hierarchia
ESEMÉNYADATOK (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)