Metodo ICertAdmin::RevokeCertificate (certadm.h)
Il metodo RevokeCertificate revoca un certificato in base a una data specificata o immediatamente. Questo metodo è stato definito per la prima volta nell'interfaccia ICertAdmin .
Un certificato revocato verrà visualizzato in un elenco di revoche di certificati (CRL) successivo, purché la data di revoca sia valida al momento della pubblicazione del CRL.
Sintassi
HRESULT RevokeCertificate(
[in] const BSTR strConfig,
[in] const BSTR strSerialNumber,
[in] LONG Reason,
[in] DATE Date
);
Parametri
[in] strConfig
Rappresenta una stringa di configurazione valida per il server dell'autorità di certificazione (CA) nel formato NOMECOMPUTER\CANAME, dove COMPUTERNAME è il nome di rete del server Servizi certificati e CANAME è il nome comune dell'autorità di certificazione, come immesso durante l'installazione di Servizi certificati. Per informazioni sul nome della stringa di configurazione, vedere ICertConfig.
[in] strSerialNumber
Specifica un numero di serie che identifica il certificato da revocare. La stringa deve specificare il numero di serie come numero pari di cifre esadecimali. Se necessario, un valore zero può essere preceduto dal numero per produrre un numero pari di cifre. Tuttavia, non è possibile usare più di uno zero iniziale.
[in] Reason
Specifica il motivo della revoca. I valori seguenti (definiti in Wincrypt.h) sono codici motivo supportati.
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)
È possibile ripristinare un certificato revocato con il codice motivo di revoca CRL_REASON_CERTIFICATE_HOLD chiamando RevokeCertificate con MAXDWORD come valore Reason . Si noti che se un certificato è stato revocato con codice motivo diverso da CRL_REASON_CERTIFICATE_HOLD, non può essere ripristinato.
[in] Date
Specifica la data, in Coordinated Universal Time (Greenwich Mean Time), in cui la revoca diventerà effettiva. Il valore zero indica l'ora coordinated universal corrente, causando la revoca immediata di un certificato. Il valore di Date viene visualizzato nella colonna Data di revoca effettiva del certificato revocato (nello snap-in MMC autorità di certificazione).
Valore restituito
VB
Se il metodo ha esito positivo, il metodo restituisce S_OK.Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.
Commenti
Questo metodo può essere chiamato più volte sullo stesso certificato, che consente di modificare la data di revoca effettiva e il motivo della revoca.
Se un certificato attualmente revocato ha CRL_REASON_CERTIFICATE_HOLD come codice motivo, è possibile ripristinare il certificato chiamando RevokeCertificate con MAXDWORD (definito in Winnt.h) come valore per il codice motivo (il parametro Reason ). Dopo essere stato ripristinato, il certificato non verrà visualizzato nei CRL futuri.
Le attività di amministrazione usano DCOM. Il codice che chiama questo metodo di interfaccia come definito in una versione precedente di Certadm.h verrà eseguito su server basati su Windows, purché il client e il server eseguano entrambi lo stesso sistema operativo Windows.
Esempio
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 );
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Nessuno supportato |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | certadm.h (include Certsrv.h) |
Libreria | Certidl.lib |
DLL | Certadm.dll |