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


Метод ICertServerPolicy::SetCertificateProperty (certif.h)

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

Синтаксис

HRESULT SetCertificateProperty(
  [in] const BSTR    strPropertyName,
  [in] LONG          PropertyType,
  [in] const VARIANT *pvarPropertyValue
);

Параметры

[in] strPropertyName

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

Кроме того, можно задать следующие свойства сертификата.

Значение Значение
NotBefore
Дата и время
Сертификат недействителен до указанной даты.
NotAfter
Дата и время
Сертификат недействителен после указанной даты.
Общие флаги
Присвойте этому свойству значение 0x00000400, чтобы предотвратить сохранение запроса в базе данных ЦС.
Осторожностью Не перезаписывайте значения маски, возвращаемые getCertificateProperty при задании этого свойства. Задайте значение, выполнив побитовое ИЛИ с существующими значениями.
 
Windows Storage Server 2003: Это поле не поддерживается.
CrossForest
PROPTYPE_LONG
Логическое значение, указывающее, должен ли ЦС работать в режиме регистрации между лесами.

Windows Server 2008 и Windows Server 2003: Регистрация между лесами не поддерживается. Регистрация между лесами поддерживается начиная с Windows Server 2008 R2.

RequesterSAMName
PROPTYPE_STRING
Указывает ЦС задать имя учетной записи инициатора запроса ("RequesterName") и различающееся имя.
RequesterUPN
PROPTYPE_STRING
Указывает ЦС преобразовать имя участника-пользователя (UPN) инициатора запроса в имя инициатора запроса ("RequesterName") и задать имя инициатора запроса и различающееся имя инициатора запроса.
RequesterDN
PROPTYPE_STRING
Указывает ЦС преобразовать полное доменное имя 1779 инициатора запроса в имя инициатора запроса и задать имя инициатора запроса ("RequesterName") и различающееся имя инициатора запроса.

[in] PropertyType

Указывает тип задаемого свойства. Параметр Type должен соответствовать типу данных pvarValue , заданному в поле vt структуры VARIANT . Параметру Type можно задать один из следующих типов.

Значение Значение
PROPTYPE_LONG
Подписанные длинные данные.
PROPTYPE_DATE
Данные даты и времени.
PROPTYPE_BINARY
Двоичные данные.
PROPTYPE_STRING
Строковые данные Юникода

[in] pvarPropertyValue

Задает значение, которое присваивается свойству .

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

VB

Если метод завершается успешно, метод возвращает S_OK.

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

Комментарии

Перед использованием этого метода необходимо вызвать метод ICertServerPolicy::SetContext .

Свойства Сертификата NotBefore и NotAfter ограничивают время существования, в течение которого сертификат действителен. Тип данных для этих свойств — это дата VARIANT с плавающей запятой, производная от COleDateTime в службе автоматизации.

При настройке свойств сертификата NotBefore и NotAfter с помощью SetCertificateProperty применяются следующие ограничения:

  • Дата NotBefore не может быть установлена раньше даты, чем дата NotBefore сертификата центра сертификации (ЦС).
  • Для параметра NotAfter date не может быть задана дата, более поздняя, чем дата NotAfter сертификата ЦС.
  • Дата NotBefore не может быть установлена раньше, чем она уже установлена, даже если новая дата позже даты NotBefore сертификата ЦС.
  • Для параметра NotAfter не может быть задана дата позже, чем она уже установлена, даже если новая дата находится до даты NotAfter сертификата ЦС.

Примеры

В следующем примере вызывается метод SetCertificateProperty для задания свойства сертификата NotBefore. В примере предполагается, что pServer является допустимым и был вызван метод ICertServerPolicy::SetContext .

HRESULT hr;
ICertServerPolicy *pServer;
SYSTEMTIME st;
BSTR bstrPropName;
VARIANT vPropValue;

bstrPropName = SysAllocString(L"NotBefore");
if (NULL == bstrPropName)
{
    printf("Unable to allocate memory.\n"); 
    return E_OUTOFMEMORY;
}

// Set the 'NotBefore' property to Noon on Jan. 1, 2000.
memset( &st, 0, sizeof(SYSTEMTIME));
st.wYear = 2000;
st.wMonth = 1;     // Jan.
st.wDay = 1;       // 1st day of month.
st.wHour = 12;     // Noon.

// Place the date into VARIANT required format.
VariantInit( &vPropValue );
vPropValue.vt = VT_DATE;
if ( !SystemTimeToVariantTime( &st, &vPropValue.date))
{
    printf("Unable to convert time.\n");
    SysFreeString(bstrPropName);
    return E_FAIL
}

// Set the NotBefore property in the certificate:
hr = pServer->SetCertificateProperty(bstrPropName,
                                     PROPTYPE_DATE, 
                                     &vPropValue);
SysFreeString(bstrPropName);
VariantClear(&vPropValue);
if (FAILED(hr))
{
    printf("SetCertificateProperty failed [%x]\n", hr);
    return hr;
}

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header certif.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certcli.dll

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

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

Свойства имени