Condividi tramite


ALTER CERTIFICATE (Transact-SQL)

Modifica la chiave privata utilizzata per crittografare un certificato, oppure ne aggiunge una nel caso in cui non sia presente alcuna chiave. Modifica la disponibilità di un certificato per Service Broker.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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' 
    |
    DECRYPTION BY PASSWORD = 'key_password' 
    |
    ENCRYPTION BY PASSWORD = 'password' 

Argomenti

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

  • 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 protezione dell'account del servizio SQL Server. Quando si utilizza questa opzione, occorre verificare che l'account del servizio abbia accesso al file specificato.

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

  • ENCRYPTION BY PASSWORD ='password'
    Specifica la password utilizzata per crittografare la chiave privata del certificato nel database. password deve soddisfare i criteri password Windows del computer che sta eseguendo l'istanza di SQL Server. Per ulteriori informazioni, vedere Criteri password.

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

  • 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 la chiave privata di un certificato già esistente nel database viene importata da un file, la chiave privata sarà protetta automaticamente dalla chiave master del database. Per proteggere la chiave privata con una password, utilizzare la frase ENCRYPTION BY PASSWORD.

L'opzione REMOVE PRIVATE KEY eliminerà la chiave privata del certificato dal database. Impostare tale opzione 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.

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

Nota importanteImportante

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

Autorizzazioni

È richiesta l'autorizzazione ALTER per il certificato.

Esempi

A. Modifica della password di un certificato

ALTER CERTIFICATE Shipping04 
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'pGF$5DGvbd2439587y',
    ENCRYPTION BY PASSWORD = '4-329578thlkajdshglXCSgf');
GO

B. Modifica della password utilizzata per crittografare la chiave privata

ALTER CERTIFICATE Shipping11 
    WITH PRIVATE KEY (ENCRYPTION BY PASSWORD = '34958tosdgfkh##38',
    DECRYPTION BY PASSWORD = '95hkjdskghFDGGG4%');
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