ALTER CERTIFICATE (Transact-SQL)

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

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

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' 
    |
    DECRYPTION BY PASSWORD = 'key_password' 
    |
    ENCRYPTION BY PASSWORD = 'password' 

Аргументы

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

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

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

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

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

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

Замечания

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

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

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

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

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

Важное примечаниеВажно!

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

Разрешения

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

Примеры

A. Изменение пароля сертификата

ALTER CERTIFICATE Shipping04 
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'pGF$5DGvbd2439587y',
    ENCRYPTION BY PASSWORD = '4-329578thlkajdshglXCSgf');
GO

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

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

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

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

Г. Изменение защиты закрытого ключа с пароля на главный ключ базы данных

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