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)