ALTER CERTIFICATE (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Analytics Platform System (PDW)

Modifica la password usata per crittografare la chiave privata di un certificato, rimuove la chiave privata o importa la chiave privata se non è presente. Modifica la disponibilità di un certificato per Service Broker.

Convenzioni di sintassi Transact-SQL

Sintassi

-- 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>' )
}  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

certificate_name
Nome univoco con il quale il certificato è noto nel database.

REMOVE PRIVATE KEY
Specifica che la chiave privata non deve più essere mantenuta all'interno del database.

WITH PRIVATE KEY specifica che la chiave privata del certificato è caricata in SQL Server.

FILE ='path_to_private_key'
Specifica il percorso completo, compreso il nome del file, per la chiave privata. Questo parametro può essere un percorso locale o un percorso UNC di rete. L'accesso al file verrà effettuato nel contesto di sicurezza dell'account del servizio SQL Server. Quando si usa questa opzione, verificare che l'account del servizio abbia accesso al file specificato.

Se viene specificato solo un nome file, il file viene salvato nella cartella dei dati utente predefinita per l'istanza. Questa cartella potrebbe essere la cartella DATA di SQL Server. Per Local DB di SQL Server Express, la cartella dei dati utente predefinita per l'istanza corrisponde al percorso specificato dalla variabile di ambiente %USERPROFILE% per l'account che ha creato l'istanza.

BINARY ='private_key_bits'
Si applica a: SQL Server 2012 (11.x) e versioni successive.

Bit della chiave privata specificati come costante binaria. Questi bit possono essere in formato crittografato. Se crittografati, l'utente deve fornire una password di decrittografia. I controlli dei criteri della password non vengono eseguiti su questa password. I bit della chiave privata devono essere in un formato di file PVK.

DECRYPTION BY PASSWORD ='current_password'
Specifica la password necessaria per decrittografare la chiave privata.

ENCRYPTION BY PASSWORD ='new_password'
Viene specificata la password utilizzata per crittografare la chiave privata del certificato nel database. new_password deve soddisfare i requisiti per i criteri password di Windows del computer che esegue l'istanza di SQL Server. Per ulteriori informazioni, vedere Password Policy.

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Rende il certificato disponibile per un initiator di una conversazione di dialogo di Service Broker.

Osservazioni:

La chiave privata deve corrispondere alla chiave pubblica specificata da certificate_name.

La clausola DECRYPTION BY PASSWORD può essere omessa se la password nel file è protetta con un valore di password Null.

Quando si importa la chiave privata di un certificato già esistente nel database, verrà protetta automaticamente dalla chiave master del database. Per proteggere la chiave privata con una password, usare la clausola ENCRYPTION BY PASSWORD.

L'opzione REMOVE PRIVATE KEY eliminerà la chiave privata del certificato dal database. È possibile rimuovere la chiave privata nei casi in cui la verifica delle firme verrà eseguita tramite certificato, o negli scenari di Service Broker in cui non è richiesta una chiave privata. Non rimuovere la chiave privata di un certificato che protegge una chiave simmetrica. Sarà necessario ripristinare la chiave privata per firmare eventuali altri moduli o altre stringhe che devono essere verificati con il certificato o per decrittografare un valore che è stato crittografato con il certificato.

Non è necessario specificare una password di decrittografia quando la chiave privata è crittografata tramite la chiave master del database.

Per cambiare la password usata per crittografare la chiave privata, non specificare le clausole FILE o BINARY.

Importante

Eseguire sempre una copia di archivio della chiave privata prima di rimuoverla dal database. Per altre informazioni, vedere BACKUP CERTIFICATE (Transact-SQL) e CERTPRIVATEKEY (Transact-SQL).

L'opzione WITH PRIVATE KEY non è disponibile in un database indipendente.

Autorizzazioni

È richiesta l'autorizzazione ALTER per il certificato.

Esempi

R. Rimozione della chiave privata di un certificato

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Modifica della password utilizzata per crittografare la chiave privata

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

C. Importazione di una chiave privata per un certificato che è già presente nel database

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

D. Modifica del tipo di protezione della chiave privata, da password a chiave master di database

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

Vedi anche

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Gerarchia di crittografia
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)