次の方法で共有


ICertServerPolicy::SetCertificateProperty メソッド (certif.h)

SetCertificateProperty メソッドを使用して、証明書に関連付けられているプロパティを設定します。

構文

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

パラメーター

[in] strPropertyName

設定するプロパティを指定します。 証明書に関連付けられている任意の 名前プロパティ を設定できます。

さらに、次の証明書プロパティを設定できます。

意味
NotBefore
日付/時刻
指定された日付より前に証明書が無効です。
NotAfter
日付/時刻
指定した日付より後に証明書が無効です。
GeneralFlags
要求が CA データベースに保持されないようにするには、このプロパティを 0x00000400 に設定します。
注意 このプロパティを設定するときに GetCertificateProperty によって返されるマスク値は上書きしないでください。 既存の値を使用してビットごとの OR を実行して、値を設定します。
 
Windows Storage Server 2003: このフィールドはサポートされていません。
CrossForest
PROPTYPE_LONG
CA がフォレスト間登録モードを動作させるかどうかを指定するブール値。

Windows Server 2008 および Windows Server 2003: フォレスト間登録はサポートされていません。 フォレスト間登録は、Windows Server 2008 R2 以降でサポートされています。

RequesterSAMName
PROPTYPE_STRING
要求元アカウント名 ("RequesterName") と識別名を設定するように CA に指示します。
RequesterUPN
PROPTYPE_STRING
要求元の ユーザー プリンシパル名 (UPN) を要求者名 ("RequesterName") に変換し、要求元名と要求元の識別名を設定するように CA に指示します。
RequesterDN
PROPTYPE_STRING
要求元の FQDN 1779 名を要求者名に変換し、要求元名 ("RequesterName") と要求者の識別名を設定するように CA に指示します。

[in] PropertyType

設定するプロパティの型を指定します。 Type パラメーターは、VARIANT 構造体の vt フィールドに設定されている pvarValue のデータ型と一致する必要があります。 Type パラメーターは、次のいずれかの型に設定できます。

意味
PROPTYPE_LONG
署名された長いデータ。
PROPTYPE_DATE
日付/時刻データ。
PROPTYPE_BINARY
バイナリ データ。
PROPTYPE_STRING
Unicode 文字列データ

[in] pvarPropertyValue

プロパティを設定する値を指定します。

戻り値

VB

メソッドが成功した場合、メソッドは S_OKを返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。

注釈

このメソッドを使用する前に 、ICertServerPolicy::SetContext を呼び出す必要があります。

NotBefore および NotAfter 証明書プロパティは、証明書が有効な有効期間を制限します。 これらのプロパティのデータ型は、オートメーションの COleDateTime から派生した浮動小数点 VARIANT 日付です。

SetCertificateProperty で NotBefore および NotAfter 証明書のプロパティを設定する場合は、次の制限が適用されます。

  • NotBefore 日付を 証明機関 (CA) 証明書の NotBefore 日付より前の日付に設定することはできません。
  • NotAfter 日付を CA 証明書の NotAfter 日付より後の日付に設定することはできません。
  • 新しい日付が CA 証明書の NotBefore 日付より後であっても、NotBefore 日付を既に設定されている日付よりも前の日付に設定することはできません。
  • 新しい日付が CA 証明書の 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
ヘッダー certif.h (Certsrv.h を含む)
Library Certidl.lib
[DLL] Certcli.dll

こちらもご覧ください

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

Name プロパティ