Compartilhar via


ALTER CERTIFICATE (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePDW (Analytics Platform System)Banco de dados SQL no Microsoft Fabric

Altera a senha usada para criptografar a chave privada de um certificado, remove a chave privada ou importa a chave privada, caso nenhuma esteja presente. Altera a disponibilidade de um certificado para Agente de Serviço.

Convenções de sintaxe de Transact-SQL

Syntax

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

Arguments

certificate_name
O nome exclusivo pelo qual o certificado é conhecido no banco de dados.

REMOVER CHAVE PRIVADA
Especifica que a chave privada não será mais mantida dentro do banco de dados.

WITH PRIVATE KEY especifica que a chave privada do certificado está carregada no SQL Server.

FILE ='path_to_private_key'
Especifica o caminho completo, incluindo o nome de arquivo, até a chave privada. Esse parâmetro pode ser um caminho local ou um caminho de UNC a um local de rede. O arquivo é acessado no contexto de segurança da conta de serviço do SQL Server. Ao usar essa opção, verifique se a conta de serviço tem acesso ao arquivo especificado.

Se você especificar apenas um nome de arquivo, o arquivo será salvo na pasta de dados do usuário padrão da instância. Essa pasta pode ou não ser a pasta SQL Server DATA. Para o SQL Server Express LocalDB, a pasta de dados de usuário padrão para a instância é o caminho especificado pela variável de ambiente %USERPROFILE% para a conta que criou a instância.

BINÁRIO ='private_key_bits'
Aplica-se a: SQL Server 2012 (11.x) e posterior.

Bits de chave privada especificados como constante binária. Estes bits podem estar no formato criptografado. Se criptografado, você deve fornecer uma senha de descriptografia. O SQL Server não executa verificações de política de senha nessa senha. Os bits de chave privada devem estar em um formato de arquivo PVK.

DESCRIPTOGRAFIA POR SENHA ='current_password'
Especifica a senha que é obrigatória para descriptografar a chave privada.

CRIPTOGRAFIA POR SENHA ='new_password'
Especifica a senha usada para criptografar a chave privada do certificado no banco de dados. A new_password deve atender aos requisitos da política de senha do Windows do computador que executa a instância do SQL Server. Para obter mais informações, consulte Password Policy.

ATIVO HÁ BEGIN_DIALOG = { ON | DESLIGADO }
Disponibiliza o certificado para o iniciador de uma conversa de caixa de diálogo do Agente de Serviço.

Remarks

A chave privada deve corresponder à chave pública especificada por certificate_name.

Você pode omitir a cláusula DECRYPTION BY PASSWORD se a senha no arquivo estiver protegida com uma senha nula.

Quando você importa a chave privada de um certificado que já existe no banco de dados, a chave privada é protegida automaticamente pela chave mestra do banco de dados. Para proteger a chave privada com uma senha, use a cláusula ENCRYPTION BY PASSWORD.

A opção REMOVE PRIVATE KEY exclui a chave privada do certificado do banco de dados. Você pode remover a chave privada ao usar o certificado para verificar assinaturas ou em cenários do Service Broker que não exigem uma chave privada. Não remova a chave privada de um certificado que proteja uma chave simétrica. Você precisa restaurar a chave privada para assinar quaisquer módulos ou cadeias de caracteres adicionais que devem ser verificadas com o certificado ou para descriptografar um valor criptografado com o certificado.

Você não precisa especificar uma senha de descriptografia quando a chave privada é criptografada usando a chave mestra do banco de dados.

Para alterar a senha usada para criptografar a chave privada, não especifique as cláusulas FILE ou BINARY.

Important

Sempre faça uma cópia de arquivamento de uma chave privada antes de removê-la de um banco de dados. Para obter mais informações, confira BACKUP CERTIFICATE (Transact-SQL) e CERTPRIVATEKEY (Transact-SQL).

A opção WITH PRIVATE KEY não está disponível em um banco de dados independente.

Limitações

Os nomes de certificado não podem ser alterados após a criação. ALTER CERTIFICATE não dá suporte à renomeação de certificados. Se você precisar usar um nome de certificado diferente, deverá criar um novo certificado e migrar dependências.

Solução alternativa para certificados TDE

Se você precisar substituir um certificado TDE (Transparent Data Encryption) por um nome diferente:

  1. Faça backup do certificado atual e da chave privada:

    BACKUP CERTIFICATE OldTDECert
    TO FILE = 'C:\Backup\OldTDECert.cer'
    WITH PRIVATE KEY (
        FILE = 'C:\Backup\OldTDECert.pvk',
        ENCRYPTION BY PASSWORD = '<password>'
    );
    
  2. Crie o novo certificado com o nome correto:

    CREATE CERTIFICATE NewTDECert
    WITH SUBJECT = 'TDE Certificate - Correct Name';
    
  3. Para cada banco de dados criptografado por TDE, altere a chave de criptografia:

    USE EncryptedDB;
    GO
    
    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER CERTIFICATE NewTDECert;
    
  4. Depois que todos os bancos de dados forem migrados, remova o certificado antigo:

    USE master;
    GO
    
    DROP CERTIFICATE OldTDECert;
    

Important

Sempre faça backup de certificados e chaves privadas antes de fazer alterações no TDE. Armazene backups em um local seguro separado do servidor de banco de dados.

Permissions

Requer a permissão ALTER no certificado.

Examples

A. Removendo a chave privada de um certificado

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Alterando a senha usada para criptografar a chave privada

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

C. Importando uma chave privada para um certificado que já está existe no banco de dados

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

D. Alterando a proteção da chave privada de uma senha para a chave mestra de banco de dados

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