Partager via


ICertAdmin ::RevokeCertificate, méthode (certadm.h)

La méthode RevokeCertificate révoque un certificat à une date spécifiée ou immédiatement. Cette méthode a d’abord été définie dans l’interface ICertAdmin .

Un certificat révoqué apparaît dans les listes de révocation de certificats ultérieures, à condition que la date de révocation soit effective au moment de la publication de la liste de révocation de certificats.

Syntaxe

HRESULT RevokeCertificate(
  [in] const BSTR strConfig,
  [in] const BSTR strSerialNumber,
  [in] LONG       Reason,
  [in] DATE       Date
);

Paramètres

[in] strConfig

Représente une chaîne de configuration valide pour le serveur d’autorité de certification sous la forme COMPUTERNAME\CANAME, où COMPUTERNAME est le nom réseau du serveur des services de certificats et CANAME est le nom commun de l’autorité de certification, tel qu’entré lors de l’installation des services de certificats. Pour plus d’informations sur le nom de la chaîne de configuration, consultez ICertConfig.

ImportantRevokeCertificate n’efface pas le cache interne lorsque la chaîne de configuration est modifiée. Lorsque vous modifiez la chaîne de configuration de l’autorité de certification, vous devez instancier un nouvel objet ICertAdmin et appeler à nouveau cette méthode avec la nouvelle chaîne de configuration.
 

[in] strSerialNumber

Spécifie un numéro de série qui identifie le certificat à révoquer. La chaîne doit spécifier le numéro de série sous la forme d’un nombre pair de chiffres hexadécimaux. Si nécessaire, un zéro peut être préfixé au nombre pour produire un nombre pair de chiffres. Toutefois, il n’est pas possible d’utiliser plus d’un zéro non significatif.

[in] Reason

Spécifie la raison de la révocation. Les valeurs suivantes (définies dans Wincrypt.h) sont des codes de motif pris en charge.

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)

Vous pouvez rétablir un certificat révoqué avec le code de motif de révocation CRL_REASON_CERTIFICATE_HOLD en appelant RevokeCertificate avec MAXDWORD comme valeur Reason . Notez que si un certificat a été révoqué avec un code de motif autre que CRL_REASON_CERTIFICATE_HOLD, il ne peut pas être rétabli.

[in] Date

Spécifie la date, en temps universel coordonné (Heure moyenne de Greenwich), à laquelle la révocation prendra effet. La valeur zéro indique le temps universel coordonné actuel, ce qui entraîne la révocation immédiate d’un certificat. La valeur Date apparaît dans la colonne Date de révocation effective du certificat révoqué (dans le composant logiciel enfichable MMC Autorité de certification).

Valeur retournée

VB

Si la méthode réussit, la méthode retourne S_OK.

Si la méthode échoue, elle retourne une valeur HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Remarques

Cette méthode peut être appelée plusieurs fois sur le même certificat, ce qui vous permet de modifier la date de révocation effective et la raison de la révocation.

Si un certificat actuellement révoqué a CRL_REASON_CERTIFICATE_HOLD comme code de raison, vous pouvez rétablir le certificat en appelant RevokeCertificate avec MAXDWORD (défini dans Winnt.h) comme valeur pour son code de raison (paramètre Reason ). Une fois rétabli, le certificat n’apparaîtra pas dans les listes de révocation de certificats ultérieures.

Les tâches d’administration utilisent DCOM. Le code qui appelle cette méthode d’interface telle que définie dans une version antérieure de Certadm.h s’exécute sur les serveurs Windows tant que le client et le serveur exécutent tous les deux le même système d’exploitation Windows.

Exemples

    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 );

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certadm.h (include Certsrv.h)
Bibliothèque Certidl.lib
DLL Certadm.dll

Voir aussi

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig