ALTER CERTIFICATE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

Modifie le mot de passe utilisé pour chiffrer la clé privée d’un certificat, supprime la clé privée, ou importe la clé privée si aucune n’est présente. Affecte à un certificat la disponibilité Service Broker.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

certificate_name
Nom unique sous lequel le certificat est connu dans la base de données.

REMOVE PRIVATE KEY
Spécifie que la clé privée ne doit plus être conservée dans la base de données.

WITH PRIVATE KEY Spécifie que la clé privée du certificat est chargée dans SQL Server.

FILE ='path_to_private_key'
Spécifie le chemin d'accès complet, y compris le nom du fichier, à la clé privée. Ce paramètre peut être un chemin d'accès local ou un chemin d'accès UNC à un emplacement réseau. L'accès au fichier a lieu dans le contexte de sécurité du compte de service SQL Server. Lorsque vous utilisez cette option, vous devez vérifier que le compte de service a accès au fichier spécifié.

Si seul le nom de fichier est spécifié, le fichier est enregistré dans le dossier de données utilisateur par défaut de l’instance. Ce dossier peut (ou pas) être le dossier DATA de SQL Server. Pour la base de données locale SQL Server Express, le dossier de données utilisateur par défaut de l’instance correspond au chemin d’accès spécifié par la variable d’environnement %USERPROFILE% pour le compte qui a créé l’instance.

BINARY ='private_key_bits'
S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Bits de clé privée spécifiés comme constante binaire. Ces bits peuvent être sous forme chiffrée. Si chiffrés, l'utilisateur doit fournir un mot de passe de déchiffrement. Les contrôles de stratégie de mot de passe ne sont pas exécutés sur ce mot de passe. Les bits de clé privée doivent être dans un format de fichier PVK.

DECRYPTION BY PASSWORD ='current_password'
Spécifie le mot de passe exigé pour déchiffrer la clé privée.

ENCRYPTION BY PASSWORD ='new_password'
Spécifie le mot de passe utilisé pour chiffrer la clé privée du certificat dans la base de données. new_password doit satisfaire aux critères de la stratégie de mot de passe Windows de l’ordinateur qui exécute l’instance de SQL Server. Pour plus d'informations, consultez Password Policy.

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Met le certificat à disposition de l'initiateur d'une conversation Service Broker.

Notes

La clé privée doit correspondre à la clé publique spécifiée par certificate_name.

Vous pouvez omettre la clause DECRYPTION BY PASSWORD si le mot de passe dans le fichier est protégé par un mot de passe vide.

Lorsque la clé privée d’un certificat qui existe déjà dans la base de données est importée, elle est automatiquement protégée par la clé principale de la base de données. Pour protéger la clé privée avec un mot de passe, utilisez la clause ENCRYPTION BY PASSWORD.

L'option REMOVE PRIVATE KEY supprime de la base de données la clé privée du certificat. Il est possible de supprimer la clé privée dans le cas où le certificat sera utilisé pour vérifier des signatures ou dans des scénarios Service Broker qui n’exigent pas de clé privée. Ne supprimez pas la clé privée d'un certificat qui protège une clé symétrique. La clé privée doit être restaurée pour signer les modules ou les chaînes complémentaires devant être vérifiés avec le certificat, ou pour déchiffrer une valeur ayant été chiffrée avec le certificat.

Il n'est pas nécessaire de spécifier un mot de passe de déchiffrement lorsque la clé privée est chiffrée à l'aide de la clé principale de la base de données.

Pour modifier le mot de passe utilisé pour chiffrer la clé privée, ne spécifiez pas la clause FILE ou BINARY.

Important

Effectuez toujours une copie de la clé privée avant de la supprimer de la base de données. Pour plus d’informations, consultez BACKUP CERTIFICATE (Transact-SQL) et CERTPRIVATEKEY (Transact-SQL).

L'option WITH PRIVATE KEY n'est pas disponible dans une base de données autonome.

Autorisations

Nécessite l'autorisation ALTER sur le certificat.

Exemples

R. Suppression de la clé privée d’un certificat

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Modification du mot de passe utilisé pour chiffrer la clé privée

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

C. Importation d'une clé privée pour un certificat déjà présent dans la base de données

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

D. Remplacement de la protection de la clé privée par mot de passe par une protection par clé principale de la base de données

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

Voir aussi

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Hiérarchie de chiffrement
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)