Delen via


ALTER CERTIFICAAT (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

Hiermee wijzigt u het wachtwoord dat wordt gebruikt om de persoonlijke sleutel van een certificaat te versleutelen, verwijdert u de persoonlijke sleutel of importeert u de persoonlijke sleutel als er geen aanwezig is. Hiermee wijzigt u de beschikbaarheid van een certificaat in Service Broker.

Transact-SQL syntaxis-conventies

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
De unieke naam waarmee het certificaat bekend is in de database.

PERSOONLIJKE SLEUTEL VERWIJDEREN
Hiermee geeft u op dat de persoonlijke sleutel niet meer in de database wordt onderhouden.

MET PERSOONLIJKE SLEUTEL geeft u op dat de persoonlijke sleutel van het certificaat wordt geladen in SQL Server.

BESTAND ='path_to_private_key'
Hiermee geeft u het volledige pad, inclusief bestandsnaam, op de persoonlijke sleutel. Deze parameter kan een lokaal pad of een UNC-pad naar een netwerklocatie zijn. Het bestand wordt geopend in de beveiligingscontext van het SQL Server-serviceaccount. Wanneer u deze optie gebruikt, moet u ervoor zorgen dat het serviceaccount toegang heeft tot het opgegeven bestand.

Als u alleen een bestandsnaam opgeeft, wordt het bestand opgeslagen in de standaardmap met gebruikersgegevens voor het exemplaar. Deze map is mogelijk of niet de map SQL Server DATA. Voor SQL Server Express LocalDB is de standaardmap met gebruikersgegevens voor het exemplaar het pad dat is opgegeven door de %USERPROFILE% omgevingsvariabele voor het account dat het exemplaar heeft gemaakt.

BINAIR ='private_key_bits'
Van toepassing op: SQL Server 2012 (11.x) en hoger.

Privésleutel-bits die zijn opgegeven als binaire constante. Deze bits kunnen in versleutelde vorm worden gebruikt. Indien versleuteld, moet u een ontsleutelingswachtwoord opgeven. SQL Server voert geen wachtwoordbeleidscontroles uit op dit wachtwoord. De privésleutel-bits moeten een PVK-bestandsindeling hebben.

ONTSLEUTELING PER WACHTWOORD ='current_password'
Hiermee geeft u het wachtwoord op dat is vereist voor het ontsleutelen van de persoonlijke sleutel.

VERSLEUTELING OP WACHTWOORD ='new_password'
Hiermee geeft u het wachtwoord op dat wordt gebruikt voor het versleutelen van de persoonlijke sleutel van het certificaat in de database. new_password moet voldoen aan de windows-wachtwoordbeleidsvereisten van de computer waarop het exemplaar van SQL Server wordt uitgevoerd. Zie Wachtwoordbeleidvoor meer informatie.

ACTIEF VOOR BEGIN_DIALOG = { AAN | UIT }
Het certificaat beschikbaar maken voor de initiator van een Service Broker-dialoogvenster.

Remarks

De persoonlijke sleutel moet overeenkomen met de openbare sleutel die is opgegeven door certificate_name.

U kunt de COMPONENT DECRYPTION BY PASSWORD weglaten als het wachtwoord in het bestand is beveiligd met een null-wachtwoord.

Wanneer u de persoonlijke sleutel importeert van een certificaat dat al bestaat in de database, wordt de persoonlijke sleutel automatisch beveiligd door de hoofdsleutel van de database. Gebruik de component ENCRYPTION BY PASSWORD om de persoonlijke sleutel met een wachtwoord te beveiligen.

Met de optie PERSOONLIJKE SLEUTEL VERWIJDEREN wordt de persoonlijke sleutel van het certificaat uit de database verwijderd. U kunt de persoonlijke sleutel verwijderen wanneer u het certificaat gebruikt om handtekeningen te verifiëren of in Service Broker-scenario's waarvoor geen persoonlijke sleutel is vereist. Verwijder de persoonlijke sleutel van een certificaat dat een symmetrische sleutel beveiligt niet. U moet de persoonlijke sleutel herstellen om eventuele extra modules of tekenreeksen te ondertekenen die moeten worden geverifieerd met het certificaat of om een waarde te ontsleutelen die is versleuteld met het certificaat.

U hoeft geen ontsleutelingswachtwoord op te geven wanneer de persoonlijke sleutel wordt versleuteld met behulp van de hoofdsleutel van de database.

Als u het wachtwoord wilt wijzigen dat wordt gebruikt voor het versleutelen van de persoonlijke sleutel, geeft u niet de BESTANDS- of BINARY-componenten op.

Important

Maak altijd een archiveringskopie van een persoonlijke sleutel voordat u deze uit een database verwijdert. Zie BACKUP CERTIFICATE (Transact-SQL) en CERTPRIVATEKEY (Transact-SQL) voor meer informatie.

De optie WITH PRIVATE KEY is niet beschikbaar in een ingesloten database.

Beperkingen

Certificaatnamen kunnen niet worden gewijzigd na het maken. ALTER CERTIFICATE biedt geen ondersteuning voor het wijzigen van de naam van certificaten. Als u een andere certificaatnaam moet gebruiken, moet u een nieuw certificaat maken en afhankelijkheden migreren.

Tijdelijke oplossing voor TDE-certificaten

Als u een TDE-certificaat (Transparent Data Encryption) wilt vervangen door een andere naam:

  1. Maak een back-up van het huidige certificaat en de persoonlijke sleutel:

    BACKUP CERTIFICATE OldTDECert
    TO FILE = 'C:\Backup\OldTDECert.cer'
    WITH PRIVATE KEY (
        FILE = 'C:\Backup\OldTDECert.pvk',
        ENCRYPTION BY PASSWORD = '<password>'
    );
    
  2. Maak het nieuwe certificaat met de juiste naam:

    CREATE CERTIFICATE NewTDECert
    WITH SUBJECT = 'TDE Certificate - Correct Name';
    
  3. Wijzig voor elke met TDE versleutelde database de versleutelingssleutel:

    USE EncryptedDB;
    GO
    
    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER CERTIFICATE NewTDECert;
    
  4. Nadat alle databases zijn gemigreerd, kunt u het oude certificaat verwijderen:

    USE master;
    GO
    
    DROP CERTIFICATE OldTDECert;
    

Important

Maak altijd een back-up van certificaten en persoonlijke sleutels voordat u TDE-wijzigingen aanbrengt. Sla back-ups op een veilige locatie op, gescheiden van de databaseserver.

Permissions

Vereist ALTER-machtiging voor het certificaat.

Examples

A. De persoonlijke sleutel van een certificaat verwijderen

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Het wachtwoord wijzigen dat wordt gebruikt om de persoonlijke sleutel te versleutelen

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

C. Een persoonlijke sleutel importeren voor een certificaat dat al aanwezig is in de database

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

D. De beveiliging van de persoonlijke sleutel wijzigen van een wachtwoord in de hoofdsleutel van de database

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