ALTER CERTIFICATE (Transact-SQL)

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

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

Sintaxe

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

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

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

REMOVE PRIVATE KEY
Especifica que a chave privada não deve mais ser 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. Esse arquivo será acessado dentro do 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 apenas um nome de arquivo for especificado, o arquivo será salvo na pasta de dados de usuário padrão para a 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.

BINARY ='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, o usuário deve fornecer uma senha de descriptografia. Verificações de diretiva de senha não são executadas nesta senha. Os bits de chave privada devem estar em um formato de arquivo PVK.

DECRYPTION BY PASSWORD ='current_password'
Especifica a senha que é obrigatória para descriptografar a chave privada.

ENCRYPTION BY PASSWORD ='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.

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Disponibiliza o certificado para o iniciador de uma conversa de caixa de diálogo do Agente de Serviço.

Comentários

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

A cláusula DECRYPTION BY PASSWORD pode ser omitida se a senha no arquivo estiver protegida com uma senha nula.

Quando a chave privada de um certificado que já existe no banco de dados for importada, a chave privada será 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 quando o certificado for usado para confirmar assinaturas ou em cenários do Agente de Serviço que não requerem uma chave privada. Não remova a chave privada de um certificado que protege uma chave simétrica. A chave privada precisará ser restaurada para assinar quaisquer módulos ou cadeias de caracteres adicionais que devam ser verificados com o certificado ou para descriptografar um valor que foi criptografado com o certificado.

Não é necessário especificar uma senha de descriptografia quando a chave privada for criptografada com 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.

Importante

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.

Permissões

Requer a permissão ALTER no certificado.

Exemplos

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  

Consulte Também

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Hierarquia de criptografia
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)