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.

ImportanteRevokeCertificate non cancella la cache interna quando viene modificata la stringa di configurazione. Quando si modifica la stringa di configurazione per la CA, è necessario creare un'istanza di un nuovo oggetto ICertAdmin e chiamare di nuovo questo metodo con la nuova stringa di configurazione.
 

[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

Vedi anche

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig