Metode ICertAdmin::RevokeCertificate (certadm.h)

Metode RevokeCertificate mencabut sertifikat baik pada tanggal tertentu atau segera. Metode ini pertama kali didefinisikan dalam antarmuka ICertAdmin .

Sertifikat yang dicabut akan muncul dalam daftar pencabutan sertifikat (CRL) berikutnya, asalkan tanggal pencabutan berlaku pada saat CRL diterbitkan.

Sintaks

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

Parameter

[in] strConfig

Mewakili string konfigurasi yang valid untuk server otoritas sertifikasi (CA) dalam bentuk COMPUTERNAME\CANAME, di mana COMPUTERNAME adalah nama jaringan server Layanan Sertifikat dan CANAME adalah nama umum otoritas sertifikasi, seperti yang dimasukkan selama penyiapan Layanan Sertifikat. Untuk informasi tentang nama string konfigurasi, lihat ICertConfig.

RevokeCertificatepenting tidak menghapus cache internal saat string konfigurasi diubah. Saat Anda mengubah string konfigurasi untuk CA, Anda harus membuat instans objek ICertAdmin baru dan memanggil metode ini lagi dengan string konfigurasi baru.
 

[in] strSerialNumber

Menentukan nomor seri yang mengidentifikasi sertifikat yang akan dicabut. String harus menentukan nomor seri sebagai jumlah digit heksadesimal genap. Jika perlu, nol dapat diawali dengan angka untuk menghasilkan jumlah digit yang merata. Namun, tidak lebih dari satu nol di depan dapat digunakan.

[in] Reason

Menentukan alasan pencabutan. Nilai berikut (didefinisikan dalam Wincrypt.h) adalah kode alasan yang didukung.

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)

Anda dapat memulihkan sertifikat yang dicabut dengan kode alasan pencabutan CRL_REASON_CERTIFICATE_HOLD dengan memanggil RevokeCertificate dengan MAXDWORD sebagai nilai Alasan . Perhatikan bahwa jika sertifikat telah dicabut dengan kode alasan apa pun selain CRL_REASON_CERTIFICATE_HOLD, sertifikat tidak dapat dipulihkan.

[in] Date

Menentukan tanggal, dalam Waktu Universal Terkoordinasi (Waktu Rata-Rata Greenwich), di mana pencabutan akan menjadi efektif. Nilai nol menunjukkan Waktu Universal Terkoordinasi saat ini, menyebabkan sertifikat segera dicabut. Nilai Tanggal muncul di kolom Tanggal Pencabutan Efektif dari sertifikat yang dicabut (dalam snap-in MMC Otoritas Sertifikasi).

Nilai kembali

VB

Jika metode berhasil, metode mengembalikan S_OK.

Jika metode gagal, metode mengembalikan nilai HRESULT yang menunjukkan kesalahan. Untuk daftar kode kesalahan umum, lihat Nilai HRESULT Umum.

Keterangan

Metode ini dapat dipanggil lebih dari sekali pada sertifikat yang sama, yang memungkinkan Anda mengubah tanggal pencabutan dan alasan pencabutan yang berlaku.

Jika sertifikat yang saat ini dicabut telah CRL_REASON_CERTIFICATE_HOLD sebagai kode alasannya, Anda dapat memulihkan sertifikat dengan memanggil RevokeCertificate dengan MAXDWORD (didefinisikan dalam Winnt.h) sebagai nilai untuk kode alasannya (parameter Alasan ). Setelah dipulihkan, sertifikat tidak akan muncul di CRL mendatang.

Tugas administrasi menggunakan DCOM. Kode yang memanggil metode antarmuka ini seperti yang didefinisikan dalam versi Certadm.h sebelumnya akan berjalan pada server berbasis Windows selama klien dan server menjalankan sistem operasi Windows yang sama.

Contoh

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tidak ada yang didukung
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header certadm.h (termasuk Certsrv.h)
Pustaka Certidl.lib
DLL Certadm.dll

Lihat juga

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig