Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Přidá certifikát do databáze na SQL Serveru.
Tato funkce není kompatibilní s exportem databáze pomocí rozhraní DACFx (Data Tier Application Framework). Před exportem musíte všechny certifikáty odstranit.
Note
V SYSTÉMU SQL Server 2022 (16.x) je možné certifikáty s privátními klíči zálohovat nebo obnovit přímo do souborů nebo binárních objektů blob pomocí párů veřejných klíčů (PKCS) č. 12 nebo ve formátu PFX (Personal Information Exchange). Všechny certifikáty generované systémem mají minimální sílu RSA-3072 v SQL Serveru 2022 (16.x).
Formát PKCS č. 12 nebo PFX je binární formát pro ukládání certifikátu serveru, všech zprostředkujících certifikátů a privátního klíče v jednom souboru. SOUBORY PFX obvykle mají přípony, například .pfx a .p12. To usnadňuje zákazníkům dodržování aktuálních pravidel osvědčených postupů zabezpečení a standardů dodržování předpisů, které zakazují šifrování RC4 tím, že eliminují potřebu používat nástroje pro převod, jako je PVKConverter (pro formát PVK nebo DER).
Note
Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.
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
Je název certifikátu v databázi.
AUTORIZAČNÍ user_name
Je jméno uživatele, který vlastní tento certifikát.
ASSEMBLY assembly_name
Určuje podepsané sestavení, které již bylo načteno do databáze.
[ SPUSTITELNÝ SOUBOR ] FILE = 'path_to_file'
Určuje úplnou cestu, včetně názvu souboru, do souboru s kódováním DER, který obsahuje certifikát. Pokud se používá možnost SPUSTITELNÝ SOUBOR, soubor je knihovna DLL, která byla podepsána certifikátem.
path_to_file může být místní cesta nebo cesta UNC k síťovému umístění. K souboru se přistupuje v kontextu zabezpečení účtu služby SQL Serveru. Tento účet musí mít požadovaná oprávnění systému souborů.
Important
Azure SQL Database nepodporuje vytvoření certifikátu ze souboru nebo použití souborů privátního klíče.
BINÁRNÍ = asn_encoded_certificate
Bajty certifikátu kódované jako binární konstanty zakódované jako ASN
platí pro: SQL Server 2012 (11.x) a novější.
S FORMÁTEM = 'PFX'
platí pro: SQL Server 2022 (16.x) a novější
Určuje generování certifikátu ze souboru PFX. Tato klauzule je nepovinná.
S PRIVÁTNÍM KLÍČEM
Určuje, že se privátní klíč certifikátu načte do SQL Serveru. Tato klauzule je neplatná při vytváření certifikátu ze sestavení. Chcete-li načíst privátní klíč certifikátu vytvořeného ze sestavení, použijte příkaz ALTER CERTIFICATE.
SOUBOR ='path_to_private_key'
Určuje úplnou cestu, včetně názvu souboru, k privátnímu klíči.
path_to_private_key může být místní cesta nebo cesta UNC k síťovému umístění. K souboru se přistupuje v kontextu zabezpečení účtu služby SQL Serveru. Tento účet musí mít potřebná oprávnění systému souborů.
Important
Tato možnost není dostupná v databázi s omezením nebo ve službě Azure SQL Database.
BINÁRNÍ = private_key_bits
Platí pro: SQL Server (počínaje SQL Serverem 2012 (11.x)) a Azure SQL Database.
Bity privátního klíče zadané jako binární konstanta. Tyto bity můžou být v šifrované podobě. Pokud je uživatel zašifrovaný, musí zadat dešifrovací heslo. U tohoto hesla se neprovádí kontroly zásad hesel. Bity privátního klíče by měly být ve formátu souboru PVK.
DEŠIFROVÁNÍ HESLEM = 'key_password'
Určuje heslo potřebné k dešifrování privátního klíče, který se načte ze souboru. Tato klauzule je nepovinná, pokud je privátní klíč chráněn heslem s hodnotou null. Uložení privátního klíče do souboru bez ochrany heslem se nedoporučuje. Pokud je požadováno heslo, ale není zadáno žádné heslo, příkaz selže.
ŠIFROVÁNÍ HESLEM = 'heslo'
Určuje heslo použité k šifrování privátního klíče. Tuto možnost použijte jenom v případě, že chcete certifikát zašifrovat heslem. Pokud je tato klauzule vynechána, privátní klíč se zašifruje pomocí hlavního klíče databáze.
Heslo musí splňovat požadavky na zásady hesel systému Windows počítače, na kterém je spuštěna instance SYSTÉMU SQL Server. Další informace najdete v tématu Zásady pro hesla.
SUBJECT = 'certificate_subject_name'
Termín odkazuje na pole v metadatech certifikátu, jak je definováno ve standardu X.509. Předmět by neměl být delší než 64 znaků a tento limit se vynucuje pro SQL Server v Linuxu. Pro SQL Server ve Windows může být předmět dlouhý až 128 znaků. Předměty, které překračují 128 znaků, jsou zkráceny, když jsou uloženy v katalogu, ale binární velký objekt (BLOB), který obsahuje certifikát, zachová úplný název subjektu.
START_DATE = datetime
Je datum, kdy se certifikát stane platným. Pokud není zadáno, START_DATE se nastaví stejně jako aktuální datum. START_DATE je v čase UTC a lze jej zadat v libovolném formátu, který lze převést na datum a čas.
EXPIRY_DATE = 'datetime'
Je datum, kdy platnost certifikátu vyprší. Pokud ho nezadáte, EXPIRY_DATE se nastaví na datum o jeden rok po START_DATE. EXPIRY_DATE je v čase UTC a lze jej zadat v libovolném formátu, který lze převést na datum a čas. SQL Server Service Broker zkontroluje datum vypršení platnosti. Zálohování pomocí šifrování pomocí certifikátů také zkontroluje datum vypršení platnosti a nepovolí vytvoření nové zálohy s prošlým certifikátem, ale umožní obnovení s prošlým certifikátem. Vypršení platnosti se však nevynucuje, pokud se certifikát používá k šifrování databáze nebo funkci Always Encrypted.
ACTIVE FOR BEGIN_DIALOG = { ON | VYPNUTO }
Zpřístupňuje certifikát iniciátoru konverzace dialogového okna Service Broker. Výchozí hodnota je ZAPNUTÁ.
Remarks
Certifikát je zabezpečitelná na úrovni databáze, která se řídí standardem X.509 a podporuje pole X.509 V1.
CREATE CERTIFICATE může načíst certifikát ze souboru, binární konstanty nebo sestavení. Tento příkaz může také vygenerovat pár klíčů a vytvořit certifikát podepsaný svým držitelem.
Privátní klíč musí být <= 2500 bajtů v šifrované podobě. Privátní klíče generované SQL Serverem jsou 1024 bitů dlouhé až SQL Server 2014 (12.x) a jsou dlouhé 2048 bitů počínaje SQL Serverem 2016 (13.x). Privátní klíče importované z externího zdroje mají minimální délku 384 bitů a maximální délku 4 096 bitů. Délka importovaného privátního klíče musí být celé číslo násobku 64 bitů. Certifikáty používané pro transparentní šifrování dat jsou omezené na velikost privátního klíče 3456 bitů.
Celé sériové číslo certifikátu je uloženo, ale pouze prvních 16 bajtů se zobrazí v zobrazení katalogu sys.certificates.
Celé pole Vystavitel certifikátu je uloženo, ale pouze prvních 884 bajtů v zobrazení katalogu sys.certificates.
Privátní klíč musí odpovídat veřejnému klíči určenému certificate_name.
Při vytváření certifikátu z kontejneru je načtení privátního klíče volitelné. Když ale SQL Server vygeneruje certifikát podepsaný svým držitelem, privátní klíč se vždy vytvoří. Ve výchozím nastavení je privátní klíč šifrovaný pomocí hlavního klíče databáze. Pokud hlavní klíč databáze neexistuje a není zadáno žádné heslo, příkaz selže.
Možnost ENCRYPTION BY PASSWORD není nutná, pokud je privátní klíč šifrovaný pomocí hlavního klíče databáze. Tuto možnost použijte pouze v případě, že je privátní klíč zašifrovaný heslem. Pokud není zadáno žádné heslo, privátní klíč certifikátu se zašifruje pomocí hlavního klíče databáze. Pokud hlavní klíč databáze nejde otevřít, vynechání této klauzule způsobí chybu.
Při šifrování privátního klíče pomocí hlavního klíče databáze nemusíte zadávat heslo pro dešifrování.
Note
Předdefinované funkce pro šifrování a podepisování nekontrolují data vypršení platnosti certifikátů. Uživatelé těchto funkcí se musí rozhodnout, kdy zkontrolovat vypršení platnosti certifikátu.
Binární popis certifikátu lze vytvořit pomocí funkcí CERTENCODED (Transact-SQL) a CERTPRIVATEKEY (Transact-SQL). Příklad, který používá CERTPRIVATEKEY a CERTENCODED ke zkopírování certifikátu do jiné databáze, viz příklad B v článku CERTENCODED (Transact-SQL).
Algoritmy MD2, MD4, MD5, SHA a SHA1 jsou v SQL Serveru 2016 (13.x) zastaralé. Až SQL Server 2016 (13.x) se vytvoří certifikát podepsaný svým držitelem pomocí SHA1. Počínaje SQL Serverem 2017 (14.x) se vytvoří certifikát podepsaný svým držitelem pomocí SHA2_256.
Permissions
Vyžaduje CREATE CERTIFICATE oprávnění k databázi. Certifikáty mohou vlastnit pouze přihlášení systému Windows, přihlášení k SQL Serveru a aplikační role. Skupiny a role nemůžou vlastnit certifikáty.
Examples
A. Vytvoření certifikátu podepsaného svým držitelem
Následující příklad vytvoří certifikát s názvem Shipping04. Privátní klíč tohoto certifikátu je chráněn heslem.
CREATE CERTIFICATE Shipping04
ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
WITH SUBJECT = 'Sammamish Shipping Records',
EXPIRY_DATE = '20201031';
GO
B. Vytvoření certifikátu ze souboru
Následující příklad vytvoří v databázi certifikát, který načítá dvojici klíčů ze souborů.
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
Azure SQL Database nepodporuje vytvoření certifikátu ze souboru.
C. Vytvoření certifikátu ze podepsaného spustitelného souboru
CREATE CERTIFICATE Shipping19
FROM EXECUTABLE FILE = 'c:\Shipping\Certs\Shipping19.dll';
GO
Případně můžete vytvořit sestavení ze dll souboru a pak vytvořit certifikát ze sestavení.
CREATE ASSEMBLY Shipping19
FROM 'c:\Shipping\Certs\Shipping19.dll'
WITH PERMISSION_SET = SAFE;
GO
CREATE CERTIFICATE Shipping19 FROM ASSEMBLY Shipping19;
GO
Important
Azure SQL Database nepodporuje vytvoření certifikátu ze souboru.
Important
Počínaje SQL Serverem 2017 (14.x) možnost konfigurace serveru CLR strict security zabrání načtení sestavení bez prvního nastavení zabezpečení pro ně. Načtěte certifikát, vytvořte z něj přihlášení, udělte UNSAFE ASSEMBLY ho ho a pak sestavení načtěte.
D. Vytvoření certifikátu podepsaného svým držitelem
Následující příklad vytvoří certifikát volaný Shipping04 bez zadání šifrovacího hesla. Tento příklad lze použít se systémem PDW (Analytics Platform System).
CREATE CERTIFICATE Shipping04
WITH SUBJECT = 'Sammamish Shipping Records';
GO
E. Vytvoření certifikátu ze souboru PFX
CREATE CERTIFICATE Shipping04
FROM FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH
FORMAT = 'PFX',
PRIVATE KEY (
DECRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh'
);
Viz také
ALTERŮV CERTIFIKÁT (Transact-SQL)
CERTIFIKÁT ODHOĎTE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Hierarchie šifrování
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)