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


Метод IX509Enrollment2::InstallResponse2 (certenroll.h)

Метод InstallResponse2 устанавливает цепочку сертификатов на компьютере конечной сущности. Массив байтов, содержащий ответ, кодируется с помощью Distinguished Encoding Rules (DER) в соответствии со стандартом Абстрактная синтаксическая нотация 1 (ASN.1). Необходимо указать массив байтов в кодировке DER в строке, которая является чистой двоичной последовательностью или кодировкой Юникода. Этот метод поддерживается через Интернет.

Синтаксис

HRESULT InstallResponse2(
  [in]           InstallResponseRestrictionFlags Restrictions,
  [in]           BSTR                            strResponse,
  [in]           EncodingType                    Encoding,
  [in, optional] BSTR                            strPassword,
  [in]           BSTR                            strEnrollmentPolicyServerUrl,
  [in]           BSTR                            strEnrollmentPolicyServerID,
  [in]           PolicyServerUrlFlags            EnrollmentPolicyServerFlags,
  [in]           X509EnrollmentAuthFlags         authFlags
);

Параметры

[in] Restrictions

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

Значение Значение
AllowNone
Не устанавливайте недоверенные сертификаты или сертификаты, для которых нет соответствующего запроса.
AllowNoOutstandingRequest
Создайте закрытый ключ из ответа сертификата, а не из фиктивного сертификата. Это делает фиктивный сертификат необязательным. Если это значение не задано, фиктивный сертификат должен существовать и из него извлекается закрытый ключ.
AllowUntrustedCertificate
Установите недоверенные конечные сущности и сертификаты центра сертификации . Сертификаты центра сертификации включают корневые и подчиненные сертификаты ЦС. Сертификаты конечных сущностей устанавливаются в личное хранилище, а сертификаты ЦС — в хранилище центра сертификации.
AllowUntrustedRoot
Выполняет то же действие, что и флаг AllowUntrustedCertificate , но также устанавливает сертификат, даже если невозможно создать цепочку сертификатов, так как корневой каталог не является доверенным.
Примечание В Windows Vista поведение этого флага совпадает с поведением, определенным для флага AllowUntrustedCertificate . Вы можете установить ненадежный корневой каталог, начиная с Windows Vista с пакетом обновления 1 (SP1).
 

[in] strResponse

Переменная BSTR , содержащая ответ в кодировке DER.

[in] Encoding

Значение перечисления EncodingType , указывающее тип кодировки, применяемой к строке, содержащей ответ в кодировке DER.

[in, optional] strPassword

Необязательный пароль для установки сертификата. Это значение может иметь значение NULL , чтобы указать, что пароль не используется. Завершив использование пароля, очистите его из памяти, вызвав функцию SecureZeroMemory . Дополнительные сведения о защите пароля см. в разделе Обработка паролей.

[in] strEnrollmentPolicyServerUrl

BSTR, содержащий URL-адрес сервера политики регистрации сертификатов (CEP).

[in] strEnrollmentPolicyServerID

BSTR, содержащий идентификатор сервера CEP.

[in] EnrollmentPolicyServerFlags

Значение перечисления PolicyServerUrlFlags . Это может быть одно из следующих значений.

Значение Значение
PsfLocationGroupPolicy
URL-адрес сервера CEP указывается в групповой политике администратором.
PsfLocationRegistry
URL-адрес сервера CEP указан в реестре.
PsfUseClientId
Указывает, что при регистрации и продлении сертификатов в атрибуте ClientId содержатся данные конкретного клиента. Примеры включают имя поставщика служб шифрования, номер версии Windows, имя пользователя, DNS-имя компьютера и DNS-имя контроллера домена. Этот флаг можно задать с помощью групповой политики.

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

PsfAutoEnrollmentEnabled
Автоматическая регистрация сертификатов включена.
PsfAllowUnTrustedCA
Указывает, что сертификат выдающего ЦС не должен быть доверенным клиентом для установки сертификата, подписанного ЦС.

[in] authFlags

Значение перечисления X509EnrollmentAuthFlags , указывающее тип проверки подлинности клиента. Для Windows 7 из следующих значений можно выбрать только X509AuthCertificate .

Значение Значение
X509AuthAnonymous
Анонимная проверка подлинности.
X509AuthKerberos
Аутентификация Kerberos.
X509AuthUsername
Проверка подлинности с использованием имени пользователя и пароля с помощью прозрачного текста.
Примечание Имя пользователя и пароль шифруются перед передачей и безопасно хранятся в хранилище учетных данных на сервере CEP.
 
X509AuthCertificate
Сертификат проверки подлинности клиента, установленный на локальном компьютере и используемый сервером для проверки удостоверения клиента.

Возвращаемое значение

Если функция выполнена успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_ACCESSDENIED
Этот метод был вызван из Интернета, и в параметре Restrictions был указан параметр AllowNoOutstandingRequest или AllowUntrustedCertificate.
HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW
Длина строки, содержащей пароль, превышает 64 килобайта.
OLE_E_BLANK
Объект регистрации не инициализирован.

Комментарии

Метод InstallResponse2 :

  1. Извлекает фиктивный сертификат из внешнего хранилища.
  2. Извлекает сертификат, содержащийся в ответе, и устанавливает его на компьютере.
  3. Копирует свойства из фиктивного сертификата во внешнем хранилище в только что установленный сертификат в личном хранилище.

Перед вызовом метода InstallResponse2 необходимо инициализировать объект IX509Enrollment , вызвав один из следующих методов.

При вызове этого метода из Интернета в параметре Restrictions можно указать только AllowNone или AllowUntrustedRoot. Если указать AllowNoOutstandingRequest или AllowUntrustedCertificate, метод возвращает ошибку E_ACCESSDENIED .

Последние четыре параметра (strEnrollmentPolicyServerUrl, strEnrollmentPolicyServerID, EnrollmentPolicyServerFlags и authFlags) не включены в метод InstallResponse . Они позволяют добавлять значение свойства в установленный сертификат так же, как интерфейс ICertPropertyEnrollmentPolicyServer .

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header certenroll.h

См. также раздел

IX509Enrollment2