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.
[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 |