ALTER CERTIFICATE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

Cambia la contraseña utilizada para cifrar la clave privada de un certificado, elimina la clave privada o importa la clave privada si no hay ninguna presente. Cambia la disponibilidad de un certificado a Service Broker.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

certificate_name
Es el nombre exclusivo por el que se conoce el certificado en la base de datos.

REMOVE PRIVATE KEY
Indica que no debe seguir manteniéndose la clave privada en la base de datos.

WITH PRIVATE KEY Especifica que la clave privada del certificado se ha cargado en SQL Server.

FILE ='path_to_private_key'
Especifica la ruta de acceso completa a la clave privada, incluido el nombre de archivo. Este parámetro puede ser una ruta de acceso local o una ruta de acceso UNC a una ubicación de red. Se obtiene acceso a este archivo dentro del contexto de seguridad de la cuenta del servicio SQL Server. Cuando utilice esta opción, asegúrese de que la cuenta de servicio tenga acceso al archivo especificado.

Si solo se especifica un nombre de archivo, el archivo se guarda en la carpeta de datos de usuario predeterminada para la instancia. Esta carpeta puede (o no) ser la carpeta DATA de SQL Server. Para LocalDB de SQL Server Express, la carpeta de datos de usuario predeterminada para la instancia es la ruta de acceso especificada por la variable de entorno %USERPROFILE% para la cuenta que ha creado la instancia.

BINARY ='private_key_bits'
Válido para : SQL Server 2012 (11.x) y versiones posteriores.

Bits de clave privada especificados como una constante binaria. Estos bits pueden estar en forma cifrada. Si están cifrados, el usuario debe proporcionar una contraseña de descifrado. No se realizan comprobaciones de directiva de contraseña en esta contraseña. Los bits de clave privada deben tener el formato de archivo PVK.

DECRYPTION BY PASSWORD ='current_password'
Especifica la contraseña necesaria para descifrar la clave privada.

ENCRYPTION BY PASSWORD ='new_password'
Especifica la contraseña que se usa para cifrar la clave privada del certificado en la base de datos. new_password debe cumplir los requisitos de la directiva de contraseñas de Windows del equipo que ejecuta la instancia de SQL Server. Para obtener más información, vea Password Policy.

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Hace que el certificado esté disponible para el iniciador de una conversación de diálogo de Service Broker.

Comentarios

La clave privada debe corresponderse con la clave pública especificada por certificate_name.

Puede omitir la cláusula DECRYPTION BY PASSWORD si la contraseña del archivo está protegida mediante una contraseña NULL.

Cuando la clave privada de un certificado que ya existe en la base de datos se importa, esta clave privada se protegerá automáticamente mediante la clave maestra de la base de datos. Para proteger la clave privada con una contraseña, utilice la cláusula ENCRYPTION BY PASSWORD.

La opción REMOVE PRIVATE KEY eliminará de la base de datos la clave privada del certificado. Puede quitar la clave privada cuando el certificado se utilice para comprobar firmas o en escenarios de Service Broker que no necesiten una clave privada. No elimine la clave privada de un certificado que proteja una clave simétrica. La clave privada debe restaurarse para firmar los módulos adicionales o cadenas que deben comprobarse con el certificado o para descifrar un valor que se haya cifrado con el certificado.

No es necesario especificar una contraseña de descifrado cuando la clave privada se ha cifrado mediante la clave maestra de la base de datos.

Para cambiar la contraseña utilizada para cifrar la clave privada, no especifique las cláusulas FILE o BINARY.

Importante

Haga siempre una copia de archivo de una clave privada antes de quitarla de una base de datos. Para obtener más información, vea BACKUP CERTIFICATE (Transact-SQL) y CERTPRIVATEKEY (Transact-SQL).

La opción WITH PRIVATE KEY no está disponible en una base de datos independiente.

Permisos

Requiere el permiso ALTER en el certificado.

Ejemplos

A. Eliminar la clave privada de un certificado

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Cambiar la contraseña utilizada para cifrar una clave privada

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

C. Importar una clave privada para un certificado que ya existe en la base de datos

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

D. Cambiar la protección de una clave privada, desde una contraseña a la clave maestra de la base de datos

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

Vea también

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Jerarquía de cifrado
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)