BACKUP CERTIFICATE (Transact-SQL)

Aplica-se a: SQL Server Analytics Platform System (PDW)

Exporta um certificado para um arquivo.

Observação

No SQL Server 2022 (16.x), é possível fazer backup ou restauração dos certificados com chaves privadas diretamente em arquivos ou blobs binários usando o formato PKCS (pares de chave pública) nº 12 ou PFX (troca de informações pessoais).

O formato PKCS nº 12 ou PFX é um formato binário para armazenar o certificado do servidor, outros certificados intermediários e a chave privada em um arquivo. Os arquivos PFX geralmente têm extensões como .pfx e .p12. Isso facilita para que os clientes sigam as diretrizes atuais de práticas recomendadas de segurança e os padrões de conformidade que proíbem a criptografia RC4, eliminando a necessidade de usar ferramentas de conversão, como PVKConverter (para o formato PVK ou DER).

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

certname
É o nome do certificado para fazer backup.

TO FILE = 'path_to_file'
Especifica o caminho completo, incluindo o nome, do arquivo no qual o certificado deve ser salvo. Esse pode ser um caminho local ou um caminho UNC para um local de rede. Se apenas um nome de arquivo for especificado, o arquivo será salvo na pasta de dados de usuário da instância padrão (que pode ou não ser a pasta DATA do SQL Server). Para o SQL Server Express LocalDB, a pasta de dados de usuário da instância padrão é o caminho especificado pela variável de ambiente %USERPROFILE% para a conta que criou a instância.

WITH FORMAT = 'PFX'
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores
Especifica a exportação de um certificado e sua chave privada para um arquivo PFX. Esta cláusula é opcional.

WITH PRIVATE KEY especifica que a chave privada do certificado deve ser salva em um arquivo. Esta cláusula é opcional.

FILE = 'path_to_private_key_file'
Especifica o caminho completo, incluindo o nome, do arquivo no qual a chave privada deve ser salva. Esse pode ser um caminho local ou um caminho UNC para um local de rede. Se apenas um nome de arquivo for especificado, o arquivo será salvo na pasta de dados de usuário da instância padrão (que pode ou não ser a pasta DATA do SQL Server). Para o SQL Server Express LocalDB, a pasta de dados de usuário da instância padrão é o caminho especificado pela variável de ambiente %USERPROFILE% para a conta que criou a instância.

ENCRYPTION BY PASSWORD = 'encryption_password'
É a senha usada para criptografar a chave privada antes de gravá-la no arquivo de backup. A senha está sujeita a verificações de complexidade.

DECRYPTION BY PASSWORD = 'decryption_password'
É a senha usada para descriptografar a chave privada antes do backup da chave. Esse argumento não será necessário se o certificado for criptografado pela chave mestra.

Comentários

Se a chave privada estiver criptografada com uma senha no banco de dados, a senha de descriptografia deverá ser especificada.

Quando você faz backup da chave privada em um arquivo, a criptografia é necessária. A senha usada para proteger a chave privada no arquivo não é a mesma senha usada para criptografar a chave privada do certificado no banco de dados.

As chaves privadas são salvas no formato de arquivo PVK.

Para restaurar um certificado do backup, com ou sem a chave privada, use a instrução CREATE CERTIFICATE.

Para restaurar uma chave privada para um certificado existente no banco de dados, use a instrução ALTER CERTIFICATE.

Ao executar um backup, os arquivos serão colocados em uma ACL da conta de serviço da instância do SQL Server. Se você precisar restaurar o certificado para um servidor que está em execução em uma conta diferente, será necessário ajustar as permissões nos arquivos para que a nova conta consiga lê-los.

Permissões

Requer a permissão CONTROL no certificado e o conhecimento da senha que é usada para criptografar a chave privada. Se for feito backup somente da parte pública do certificado, será necessário que esse comando tenha alguma permissão no certificado e que a permissão VIEW não seja negada ao chamador no certificado.

Exemplos

a. Exportando um certificado para um arquivo

O exemplo a seguir exporta um certificado para um arquivo.

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

B. Exportando um certificado e uma chave privada

No exemplo a seguir, a chave privada do certificado do qual é feito backup será criptografada com a senha 997jkhUbhk$w4ez0876hKHJH5gh.

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

C. Exportando um certificado que tem uma chave privada criptografada

No exemplo a seguir, a chave privada do certificado é criptografada no banco de dados. A chave privada deve ser descriptografada com a senha 9875t6#6rfid7vble7r. Quando o certificado for armazenado no arquivo de backup, a chave privada será criptografada com a senha 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. Exportar um certificado e sua chave privada para um arquivo PFX

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

Confira também

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)