Бөлісу құралы:


СЕРТИФИКАТ ALTER (Transact-SQL)

Применимо к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceСистема платформы аналитики (PDW)База данных SQL в Microsoft Fabric

Изменяет пароль, используемый для шифрования закрытого ключа сертификата, удаляет закрытый ключ или импортирует закрытый ключ, если он не существует. Изменяет доступность сертификата на Service Broker.

Соглашения о синтаксисе 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
Уникальное имя, по которому сертификат известен в базе данных.

УДАЛЕНИЕ ЗАКРЫТОГО КЛЮЧА
Указывает, что закрытый ключ больше не будет храниться в базе данных.

WITH PRIVATE KEY указывает, что закрытый ключ сертификата следует загрузить в SQL Server.

ФАЙЛ ='path_to_private_key'
Указывает полный путь к закрытому ключу, включая имя файла. Этот аргумент может быть локальным путем или UNC-путем к точке в сети. Доступ к файлу осуществляется в контексте безопасности учетной записи службы SQL Server. Используя этот аргумент, необходимо убедиться в том, что учетная запись службы имеет доступ к указанному файлу.

Если указать только имя файла, файл сохраняется в папке данных пользователя по умолчанию для экземпляра. Эта папка может быть или не является папкой ДАННЫХ SQL Server. В SQL Server Express LocalDB папкой данных пользователя по умолчанию для экземпляра является путь, указанный в переменной среды %USERPROFILE% учетной записи, создавшей этот экземпляр.

БИНАРНЫЙ ='private_key_bits'
Область применения: SQL Server 2012 (11.x) и более поздних версий.

Биты закрытого ключа, указанного в качестве двоичной константы. Биты могут находиться в зашифрованном виде. При шифровании необходимо указать пароль расшифровки. SQL Server не выполняет проверку политики паролей по этому паролю. Биты закрытого ключа должны быть в формате файла PVK.

DECRYPTION BY PASSWORD ='текущий пароль'
Указывает пароль, необходимый для расшифровки закрытого ключа.

ENCRYPTION BY PASSWORD ='новый пароль'
Задает пароль, который используется для шифрования закрытого ключа сертификата в базе данных. new_password должны соответствовать требованиям политики паролей Windows компьютера, на котором выполняется экземпляр SQL Server. Дополнительные сведения см. в разделе Политика паролей.

АКТИВНО BEGIN_DIALOG = { ON | OFF }
Делает сертификат доступным инициатору диалога Service Broker.

Remarks

Закрытый ключ должен соответствовать открытому ключу, заданному аргументом certificate_name.

Если пароль в файле защищен паролем, можно опустить предложение DECRYPTION BY.

При импорте закрытого ключа сертификата, уже существующего в базе данных, закрытый ключ автоматически защищен главным ключом базы данных. Чтобы защитить закрытый ключ паролем, используйте предложение ENCRYPTION BY PASSWORD.

Параметр REMOVE PRIVATE KEY удаляет закрытый ключ сертификата из базы данных. При использовании сертификата можно удалить закрытый ключ для проверки подписей или в сценариях Service Broker, которые не требуют закрытого ключа. Не удаляйте закрытый ключ сертификата, который защищает симметричный ключ. Необходимо восстановить закрытый ключ, чтобы подписать все дополнительные модули или строки, которые должны быть проверены с помощью сертификата, или расшифровать значение, зашифрованное с помощью сертификата.

Не нужно указывать пароль расшифровки при шифровании закрытого ключа с помощью главного ключа базы данных.

Чтобы изменить пароль, используемый для шифрования закрытого ключа, не указывайте предложения FILE или BINARY.

Important

Всегда создавайте архивную копию закрытого ключа, прежде чем удалять его из базы данных. Дополнительные сведения см. в разделе BACKUP CERTIFICATE (Transact-SQL) и CERTPRIVATEKEY (Transact-SQL).

Параметр WITH PRIVATE KEY недоступен в автономной базе данных.

Ограничения

Имена сертификатов не могут быть изменены после создания. ALTER CERTIFICATE не поддерживает переименование сертификатов. Если необходимо использовать другое имя сертификата, необходимо создать новый сертификат и перенести зависимости.

Обходное решение для сертификатов TDE

Если необходимо заменить сертификат прозрачного шифрования данных (TDE) другим именем:

  1. Резервное копирование текущего сертификата и закрытого ключа:

    BACKUP CERTIFICATE OldTDECert
    TO FILE = 'C:\Backup\OldTDECert.cer'
    WITH PRIVATE KEY (
        FILE = 'C:\Backup\OldTDECert.pvk',
        ENCRYPTION BY PASSWORD = '<password>'
    );
    
  2. Создайте новый сертификат с правильным именем:

    CREATE CERTIFICATE NewTDECert
    WITH SUBJECT = 'TDE Certificate - Correct Name';
    
  3. Для каждой зашифрованной базы данных TDE измените ключ шифрования:

    USE EncryptedDB;
    GO
    
    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER CERTIFICATE NewTDECert;
    
  4. После переноса всех баз данных удалите старый сертификат:

    USE master;
    GO
    
    DROP CERTIFICATE OldTDECert;
    

Important

Перед внесением изменений TDE всегда выполняйте резервную копию сертификатов и закрытых ключей. Хранение резервных копий в безопасном расположении отдельно от сервера базы данных.

Permissions

Требует разрешения ALTER для сертификата.

Examples

A. Удаление закрытого ключа сертификата

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Изменение пароля, используемого для шифрования закрытого ключа

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

C. Импорт закрытого ключа для сертификата, который уже присутствует в базе данных

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

D. Изменение защиты закрытого ключа паролем на защиту главным ключом базы данных

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