ICertAdmin::RevokeCertificate メソッド (certadm.h)
RevokeCertificate メソッドは、指定した日付または直ちに証明書を取り消します。 このメソッドは、最初に ICertAdmin インターフェイスで定義されました。
失効した証明書は、CRL が発行された時点で失効日が有効な場合、後続の 証明書失効リスト (CRL) に表示されます。
構文
HRESULT RevokeCertificate(
[in] const BSTR strConfig,
[in] const BSTR strSerialNumber,
[in] LONG Reason,
[in] DATE Date
);
パラメーター
[in] strConfig
COMPUTERNAME\CANAME 形式の証明機関 (CA) サーバーの有効な構成文字列を表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名、CANAME は証明書サービスのセットアップ時に入力された証明機関の共通名です。 構成文字列名の詳細については、「 ICertConfig」を参照してください。
[in] strSerialNumber
失効させる証明書を識別するシリアル番号を指定します。 文字列では、シリアル番号を偶数の 16 進数として指定する必要があります。 必要に応じて、数字の前に 0 を付けて、偶数桁を生成できます。 ただし、先頭に 0 を 1 つ以上使用することはできません。
[in] Reason
失効の理由を指定します。 サポートされている理由コードは、次の値 (Wincrypt.h で定義) です。
CRL_REASON_UNSPECIFIED (0)
CRL_REASON_KEY_COMPROMISE (1)
CRL_REASON_CA_COMPROMISE (2)
CRL_REASON_AFFILIATION_CHANGED (3)
CRL_REASON_SUPERSEDED (4)
CRL_REASON_CESSATION_OF_OPERATION (5)
CRL_REASON_CERTIFICATE_HOLD (6)
CRL_REASON_CERTIFICATE_HOLD失効理由コードを使用して失効した証明書を復元するには、理由値として MAXDWORD を使用して RevokeCertificate を呼び出します。 証明書がCRL_REASON_CERTIFICATE_HOLD以外の理由コードで取り消された場合、証明書を復元できないことに注意してください。
[in] Date
失効が有効になる日付を協定世界時 (グリニッジ標準時) で指定します。 値 0 は現在の協定世界時を示し、証明書はすぐに取り消されます。 Date の値は、失効した証明書の [有効な失効日] 列 (証明機関 MMC スナップイン) に表示されます。
戻り値
VB
メソッドが成功した場合、メソッドは S_OKを返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。
注釈
このメソッドは、同じ証明書で複数回呼び出すことができます。これにより、有効な失効日と失効理由を変更できます。
現在失効している証明書が理由コードとしてCRL_REASON_CERTIFICATE_HOLD場合は、理由コード (Reason パラメーター) の値として MAXDWORD (Winnt.h で定義) を使用して RevokeCertificate を呼び出すことによって、証明書を復元できます。 復元後、証明書は今後の CRL には表示されません。
管理タスクでは DCOM が使用されます。 以前のバージョンの Certadm.h で定義されているこのインターフェイス メソッドを呼び出すコードは、クライアントとサーバーの両方が同じ Windows オペレーティング システムを実行している限り、Windows ベースのサーバーで実行されます。
例
BSTR bstrCA = NULL;
BSTR bstrSerial = NULL; // certificate serial number
long nReason;
DATE RevokeDate; // revocation date
SYSTEMTIME st;
bstrSerial = SysAllocString(L"<SERIALNUMBERHERE>");
bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA || NULL == bstrSerial)
{
printf("Memory allocation failed\n");
goto error;
}
nReason = CRL_REASON_AFFILIATION_CHANGED; // Defined
// in Wincrypt.h
// Specify when the cert should be revoked.
// Note: To revoke immediately, set RevokeDate to zero.
// This example sets the revoke date to noon on 1/1/2001.
// Zero out values first (avoids setting minutes, seconds,
// and so on).
memset(&st, 0, sizeof(SYSTEMTIME));
st.wYear = 2001;
st.wMonth = 1; // Jan
st.wDay = 1; // 1st day of month
st.wHour = 12; // Noon
// Place the date in the required format.
if (!SystemTimeToVariantTime(&st, &RevokeDate))
{
printf("Unable to convert time.\n");
goto error;
}
// Revoke the certificate.
// pCertAdmin is a previously instantiated ICertAdmin object.
hr = pCertAdmin->RevokeCertificate( bstrCA,
bstrSerial,
nReason,
RevokeDate );
if (FAILED(hr))
{
printf("Failed RevokeCertificate. [%x]\n", hr);
goto error;
}
else
printf("Certificate %ws revoked.\n", bstrSerial );
// Done processing.
error:
// Free resources.
if (bstrSerial)
SysFreeString( bstrSerial );
if (bstrCA)
SysFreeString( bstrCA );
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | certadm.h (Certsrv.h を含む) |
Library | Certidl.lib |
[DLL] | Certadm.dll |