Condividi tramite


BACKUP CERTIFICATE (Transact-SQL)

Si applica a:SQL ServerAnalytics Platform System (PDW)

Esporta un certificato in un file.

Nota

In SQL Server 2022 (16.x), i certificati con chiavi private possono essere sottoposti a backup o ripristinati direttamente da e verso file o BLOB binari usando il formato PKCS (Public Key Pair) #12 o PFX (Personal Information Exchange).

Il formato PKCS #12 o PFX è un formato binario usato per archiviare il certificato del server, tutti i certificati intermedi e la chiave privata in un unico file. Generalmente, l'estensione dei file PFX è .pfx o .p12. In questo modo, i clienti possono rispettare le linee guida correnti relative alle procedure consigliate per la sicurezza e gli standard di conformità che vietano la crittografia RC4 senza dover necessariamente usare strumenti di conversione come PVKConverter (per il formato PVK o DER).

Convenzioni di sintassi Transact-SQL

Sintassi

-- Syntax for SQL Server  
  
BACKUP CERTIFICATE certname TO FILE = 'path_to_file'  
    [ WITH
      [FORMAT = 'PFX',]
      PRIVATE KEY   
      (   
        FILE = 'path_to_private_key_file' ,  
        ENCRYPTION BY PASSWORD = 'encryption_password'   
        [ , DECRYPTION BY PASSWORD = 'decryption_password' ]   
      )   
    ]  
-- Syntax for Parallel Data Warehouse  
  
BACKUP CERTIFICATE certname TO FILE ='path_to_file'  
      WITH PRIVATE KEY   
      (   
        FILE ='path_to_private_key_file',  
        ENCRYPTION BY PASSWORD ='encryption_password'   
      )   

Nota

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

Argomenti

certname
Nome del certificato di cui eseguire il backup.

TO FILE = 'path_to_file'
Specifica il percorso completo, nome di file incluso, del file in cui verrà salvato il certificato. Questo percorso può essere un percorso locale o un percorso UNC di rete. Se si specifica solo un nome di file, il file verrà salvato nella cartella dati utente predefinita dell'istanza (che può corrispondere o meno alla cartella DATA di SQL Server). Per LocalDB di SQL Server Express, la cartella di dati utente predefinita dell'istanza corrisponde al percorso specificato dalla variabile di ambiente %USERPROFILE% per l'account che ha creato l'istanza.

WITH FORMAT = 'PFX'
Si applica a: SQL Server 2022 (16.x) e versioni successive
Specifica che un certificato e la relativa chiave privata devono essere esportati in un file PFX. La clausola è facoltativa.

WITH PRIVATE KEY specifica che la chiave privata del certificato deve essere salvata in un file. La clausola è facoltativa.

FILE = 'path_to_private_key_file'
Specifica il percorso completo, nome di file incluso, del file in cui verrà salvata la chiave privata. Questo percorso può essere un percorso locale o un percorso UNC di rete. Se si specifica solo un nome di file, il file verrà salvato nella cartella dati utente predefinita dell'istanza (che può corrispondere o meno alla cartella DATA di SQL Server). Per LocalDB di SQL Server Express, la cartella di dati utente predefinita dell'istanza corrisponde al percorso specificato dalla variabile di ambiente %USERPROFILE% per l'account che ha creato l'istanza.

ENCRYPTION BY PASSWORD = 'encryption_password'
Password utilizzata per crittografare la chiave privata prima di scriverla nel file di backup. Questa password è soggetta ai controlli di complessità delle password.

DECRYPTION BY PASSWORD = 'decryption_password'
Password utilizzata per decrittografare la chiave privata prima di eseguire il backup della chiave. Se il certificato è crittografato tramite la chiave master, questo argomento non è necessario.

Osservazioni:

Se la chiave privata è crittografata con una password nel database, è necessario specificare la password di decrittografia.

Quando si esegue il backup della chiave privata in un file, la crittografia è obbligatoria. La password usata per proteggere la chiave privata nel file non corrisponde a quella usata per crittografare la chiave privata del certificato nel database.

Le chiavi private vengono salvate nel formato di file PVK.

Per ripristinare un certificato di cui è stato eseguito il backup, con o senza la chiave privata, usare l'istruzione CREATE CERTIFICATE.

Per ripristinare una chiave privata in un certificato esistente nel database, usare l'istruzione ALTER CERTIFICATE.

Quando si esegue un backup, i file verranno inclusi nell'elenco di controllo di accesso per l'account del servizio dell'istanza di SQL Server. Per ripristinare il certificato in un server in esecuzione con un account diverso, sarà necessario modificare le autorizzazioni per i file in modo che tali file siano leggibili dal nuovo account.

Autorizzazioni

È richiesta l'autorizzazione CONTROL per il certificato ed è necessario conoscere la password utilizzata per crittografare la chiave privata. Se si esegue il backup solo della parte pubblica del certificato, per l'uso di questo comando dovranno essere disponibili alcune autorizzazioni per il certificato e al chiamante non dovrà essere stata negata l'autorizzazione VIEW per il certificato.

Esempi

R. Esportazione di un certificato in un file

Nell'esempio seguente un certificato viene esportato in un file.

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert';  
GO  

B. Esportazione di un certificato e di una chiave privata

Nell'esempio seguente la chiave privata del certificato di cui si esegue il backup verrà crittografata con la password 997jkhUbhk$w4ez0876hKHJH5gh.

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert'  
    WITH PRIVATE KEY ( FILE = 'c:\storedkeys\sales05key' ,   
    ENCRYPTION BY PASSWORD = '997jkhUbhk$w4ez0876hKHJH5gh' );  
GO  

C. Esportazione di un certificato con una chiave privata crittografata

Nell'esempio seguente la chiave privata del certificato è crittografata nel database ed è necessario decrittografarla con la password 9875t6#6rfid7vble7r. Quando il certificato viene archiviato nel file di backup, la chiave privata verrà crittografata con la password 9n34khUbhk$w4ecJH5gh.

BACKUP CERTIFICATE sales09 TO FILE = 'c:\storedcerts\sales09cert'   
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = '9875t6#6rfid7vble7r' ,  
    FILE = 'c:\storedkeys\sales09key' ,   
    ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh' );  
GO  

D. Esportare un certificato e la relativa chiave in un file PFX

BACKUP CERTIFICATE Shipping04 TO FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH  
    FORMAT = 'PFX',  
    PRIVATE KEY ( 
ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh',  
ALGORITHM = 'AES_256'
    )

Vedi anche

CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)