Поделиться через


ALTER CERTIFICATE (Transact-SQL)

Применимо: база данных SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Платформенная система аналитики (PDW) в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

certificate_name
Уникальное имя, под которым сертификат известен в базе данных.

REMOVE PRIVATE KEY
Указывает, что закрытый ключ больше не нужно хранить в базе данных.

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

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

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

BINARY ='биты закрытого ключа'
Область применения: SQL Server 2012 (11.x) и более поздних версий.

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

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

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

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Делает сертификат доступным инициатору диалога Service Broker.

Замечания

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

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

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

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

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

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

Внимание

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

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

Разрешения

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

Примеры

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

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

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

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

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

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  

См. также

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
СЕРТИФИКАТ BACKUP (Transact-SQL)
Иерархия средств шифрования
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)