Sdílet prostřednictvím


ALTERŮV CERTIFIKÁT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLPdW (Analytics Platform System)Databáze SQL v Microsoft Fabric

Změní heslo použité k šifrování privátního klíče certifikátu, odebere privátní klíč nebo importuje privátní klíč, pokud neexistuje. Změní dostupnost certifikátu na Service Broker.

Transact-SQL konvence syntaxe

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
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' | BINARY = private_key_bits }  
         [ , DECRYPTION BY PASSWORD = 'current_password' ]  
         [ , ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
    |  
      {  
         [ DECRYPTION BY PASSWORD = 'current_password' ]  
         [ [ , ] ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
-- Syntax for Parallel Data Warehouse  
  
ALTER CERTIFICATE certificate_name   
{  
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY (   
        FILE = '<path_to_private_key>',  
        DECRYPTION BY PASSWORD = '<key password>' )
}  

Arguments

certificate_name
Jedinečný název, kterým je certifikát známý v databázi.

ODEBRÁNÍ PRIVÁTNÍHO KLÍČE
Určuje, že privátní klíč už nebude v databázi zachován.

WITH PRIVATE KEY Určuje, že privátní klíč certifikátu je načten do SQL Serveru.

SOUBOR ='path_to_private_key'
Určuje úplnou cestu, včetně názvu souboru, k privátnímu klíči. Tento parametr 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. Při použití této možnosti se ujistěte, že má účet služby přístup k zadanému souboru.

Pokud zadáte pouze název souboru, soubor se uloží do výchozí složky dat uživatele pro instanci. Tato složka může nebo nemusí být složkou SQL Server DATA. Pro SQL Server Express LocalDB je výchozí složka dat uživatele pro instanci cesta určená proměnnou %USERPROFILE% prostředí pro účet, který instanci vytvořil.

BINÁRNÍ ='private_key_bits'
platí pro: SQL Server 2012 (11.x) a novější.

Bity privátního klíče zadané jako binární konstanta. Tyto bity můžou být v šifrované podobě. Pokud je zašifrováno, musíte zadat dešifrovací heslo. SQL Server neprovádí kontroly zásad hesel pro toto heslo. Bity privátního klíče by měly být ve formátu souboru PVK.

DEŠIFROVÁNÍ HESLEM ='current_password'
Určuje heslo potřebné k dešifrování privátního klíče.

ŠIFROVÁNÍ HESLEM ='new_password'
Určuje heslo použité k šifrování privátního klíče certifikátu v databázi. new_password musí splňovat požadavky na zásady hesel systému Windows počítače, na kterém běží instance SQL Serveru. Další informace najdete v tématu Zásady pro hesla.

ACTIVE FOR BEGIN_DIALOG = { ON | VYPNUTO }
Zpřístupňuje certifikát iniciátoru konverzace dialogového okna Service Broker.

Remarks

Privátní klíč musí odpovídat veřejnému klíči určenému certificate_name.

Klauzuli DECRYPTION BY PASSWORD můžete vynechat, pokud je heslo v souboru chráněné heslem s hodnotou null.

Při importu privátního klíče certifikátu, který již v databázi existuje, je privátní klíč automaticky chráněn hlavním klíčem databáze. K ochraně privátního klíče pomocí hesla použijte klauzuli ENCRYPTION BY PASSWORD.

Možnost ODEBRAT PRIVÁTNÍ KLÍČ odstraní privátní klíč certifikátu z databáze. Privátní klíč můžete odebrat, když certifikát použijete k ověření podpisů nebo ve scénářích služby Service Broker, které nevyžadují privátní klíč. Neodebíjejte privátní klíč certifikátu, který chrání symetrický klíč. Pokud chcete podepsat všechny další moduly nebo řetězce, které by se měly ověřit pomocí certifikátu, nebo dešifrovat hodnotu zašifrovanou certifikátem, musíte privátní klíč obnovit.

Pokud je privátní klíč zašifrovaný pomocí hlavního klíče databáze, nemusíte zadávat dešifrovací heslo.

Pokud chcete změnit heslo použité k šifrování privátního klíče, nezadávejte klauzule FILE ani BINARY.

Important

Před odebráním privátního klíče z databáze vždy vytvořte archivní kopii privátního klíče. Další informace naleznete v tématu BACKUP CERTIFICATE (Transact-SQL) a CERTPRIVATEKEY (Transact-SQL).

Možnost WITH PRIVATE KEY není k dispozici v obsažené databázi.

Omezení

Po vytvoření není možné změnit názvy certifikátů. ALTER CERTIFICATE nepodporuje přejmenování certifikátů. Pokud potřebujete použít jiný název certifikátu, musíte vytvořit nový certifikát a migrovat závislosti.

Alternativní řešení pro certifikáty transparentního šifrování dat

Pokud potřebujete nahradit certifikát transparentního šifrování dat jiným názvem:

  1. Zálohujte aktuální certifikát a privátní klíč:

    BACKUP CERTIFICATE OldTDECert
    TO FILE = 'C:\Backup\OldTDECert.cer'
    WITH PRIVATE KEY (
        FILE = 'C:\Backup\OldTDECert.pvk',
        ENCRYPTION BY PASSWORD = '<password>'
    );
    
  2. Vytvořte nový certifikát se správným názvem:

    CREATE CERTIFICATE NewTDECert
    WITH SUBJECT = 'TDE Certificate - Correct Name';
    
  3. Pro každou databázi zašifrovanou transparentním šifrováním dat změňte šifrovací klíč:

    USE EncryptedDB;
    GO
    
    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER CERTIFICATE NewTDECert;
    
  4. Po migraci všech databází odstraňte starý certifikát:

    USE master;
    GO
    
    DROP CERTIFICATE OldTDECert;
    

Important

Před provedením změn transparentního šifrování dat vždy zálohujte certifikáty a privátní klíče. Uložte zálohy do zabezpečeného umístění odděleně od databázového serveru.

Permissions

Vyžaduje oprávnění ALTER k certifikátu.

Examples

A. Odebrání privátního klíče certifikátu

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Změna hesla použitého k šifrování privátního klíče

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

C. Import privátního klíče pro certifikát, který je již v databázi.

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

D. Změna ochrany privátního klíče z hesla na hlavní klíč databáze

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