Bagikan melalui


ICertRequest::Kirim metode (certcli.h)

Metode Kirim mengirimkan permintaan ke server Layanan Sertifikat.

Jika status disposisi yang dihasilkan CR_DISP_ISSUED, Anda dapat mengambil sertifikat yang dikeluarkan dengan memanggil metode ICertRequest3::GetCertificate .

Sintaks

HRESULT Submit(
  [in]          LONG       Flags,
  [in]          const BSTR strRequest,
  [in]          const BSTR strAttributes,
  [in]          const BSTR strConfig,
  [out, retval] LONG       *pDisposition
);

Parameter

[in] Flags

Menentukan format permintaan, jenis permintaan, dan apakah permintaan dienkripsi. Salah satu bendera atribut format berikut dapat digunakan untuk menentukan bagaimana permintaan dikodekan.

Nilai Makna
CR_IN_BASE64
Format Unicode BASE64 tanpa awal/akhir.
CR_IN_BASE64HEADER
Format Unicode BASE64 dengan awal/akhir.
CR_IN_BINARY
Format biner.
CR_IN_ENCODEANY
Coba semua format CR_IN_BASE64HEADER, CR_IN_BASE64, atau CR_IN_BINARY.
 

Salah satu bendera nilai format berikut dapat digunakan untuk menentukan jenis permintaan.

Nilai Makna
CR_IN_RETURNCHALLENGE
Mengembalikan tantangan yang dapat dikirimkan ke CA. Tantangannya adalah Permintaan penuh Manajemen Sertifikat melalui CMS (CMC). Ketika bendera ini diaktifkan, memanggil metode GetFullResponseProperty dengan bendera FR_PROP_FULLRESPONSE mengembalikan respons CMC yang berisi tantangan pengesahan kunci.
CR_IN_CHALLENGERESPONSE
Panggilan adalah respons terhadap tantangan. RequestId harus diteruskan dalam parameter strAttributes dan respons terhadap tantangan harus diteruskan dalam parameter strRequest . Bendera ini harus diaktifkan ketika aplikasi perlu mengirim kembali tantangan yang didekripsi ke CA. Anda kemudian dapat memanggil metode GetFullResponseProperty untuk mendapatkan sertifikat entitas akhir yang diterbitkan.
CR_IN_CMC
Permintaan Manajemen Sertifikat melalui CMS (CMC).
CR_IN_FORMATANY
Coba semua format CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7, atau CR_IN_PKCS10.
CR_IN_KEYGEN
Permintaan Keygen (format Netscape).
CR_IN_PKCS7
Permintaan PKCS #7 (agen perpanjangan atau pendaftaran).
CR_IN_PKCS10
Permintaan PKCS #10.
CR_IN_RPC
Kirim pesan menggunakan RPC alih-alih DCOM.
CR_IN_FULLRESPONSE
Mengembalikan respons CMC penuh.
CR_IN_CRLS
Sertakan daftar pencabutan sertifikat saat ini.
CR_IN_MACHINE
Gunakan konteks komputer layanan kunci.
CR_IN_ROBO
Menunjukkan bahwa pesan sedang diminta atas nama pengirim lain.

Jika otoritas sertifikasi (CA) tidak dikonfigurasi untuk "perpanjang atas nama", MAKA CA menolak permintaan tersebut.

Untuk informasi selengkapnya tentang mengaktifkan "perpanjangan atas nama" pada CA, lihat Mengonfigurasi Layanan Web Pendaftaran Sertifikat untuk Mode Khusus Perpanjangan.

Permintaan harus berupa permintaan perpanjangan dan sertifikat penandatanganan harus menggunakan templat yang sama dengan permintaan.

Selain itu, permintaan hanya akan berhasil ketika salah satu kondisi berikut ini benar:

  • Sertifikat penandatanganan harus dikeluarkan oleh CA yang sama
  • Ekstensi SAN2 sertifikat penandatanganan memiliki UPN subjek
  • Nama Subjek sertifikat penandatanganan memiliki FQDN_1779 subjek
Windows Server 2008 dan Windows Server 2003: Bendera ini tidak didukung.
CR_IN_CLIENTIDNONE
Jangan sertakan dalam data permintaan yang mengidentifikasi klien.

Windows Server 2008 dan Windows Server 2003: Bendera ini tidak didukung.

CR_IN_CONNECTONLY
Menentukan bahwa koneksi DCOM dengan server dibuat, tetapi permintaan tidak dikirimkan.

[in] strRequest

Penunjuk ke string yang berisi permintaan sertifikat. Jika CR_IN_BASE64 atau CR_IN_BASE64HEADER ditentukan dalam Bendera, strRequest harus berupa string Unicode.

[in] strAttributes

Penunjuk ke string yang berisi atribut tambahan opsional untuk permintaan tersebut. Setiap atribut adalah pasangan string nama-nilai. Karakter titik dua memisahkan nama dan nilai, dan karakter baris baru memisahkan beberapa pasangan nama-nilai, misalnya:

C++ "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2"
VB "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2"
Ketika server Certificate Services mengurai nama atribut, server tersebut mengabaikan spasi, tanda hubung (tanda minus), dan kasus. Misalnya, "AttributeName1", "Attribute Name1", dan "Attribute-name1" semuanya setara. Untuk nilai atribut, server Layanan Sertifikat mengabaikan spasi kosong di awal dan akhir.

[in] strConfig

Mewakili string konfigurasi yang valid untuk server Layanan Sertifikat. String dapat berupa URL HTTPS untuk server pendaftaran atau dalam bentuk ComputerName\CAName, di mana ComputerName adalah nama jaringan server, dan CAName adalah nama umum otoritas sertifikasi, seperti yang dimasukkan selama penyiapan Layanan Sertifikat. Untuk informasi tentang nama string konfigurasi, lihat ICertConfig.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: URL HTTPS tidak didukung sebagai input.

[out, retval] pDisposition

Penunjuk ke nilai disposisi permintaan.

Mengembalikan nilai

C++

Jika metode berhasil, metode mengembalikan S_OK.

Setelah berhasil menyelesaikan fungsi ini, *pDisposition diatur ke salah satu nilai dalam tabel berikut.

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

VB

Nilai yang dikembalikan menentukan disposisi permintaan. Disposisi adalah salah satu nilai berikut.
Menampilkan kode Deskripsi
CR_DISP_DENIED
Permintaan ditolak
CR_DISP_ERROR
Permintaan gagal
CR_DISP_INCOMPLETE
Permintaan tidak selesai
CR_DISP_ISSUED
Sertifikat dikeluarkan
CR_DISP_ISSUED_OUT_OF_BAND
Sertifikat dikeluarkan secara terpisah
CR_DISP_UNDER_SUBMISSION
Permintaan diambil di bawah pengajuan

Keterangan

Jika Anda membaca permintaan format BASE64 dari file, pastikan bahwa file berada di Unicode, atau konversikan dari ASCII ke Unicode sebelum mengirimkan permintaan dengan metode ini.

Contoh

    //  The pointer to the interface object.
    ICertRequest * pCertRequest = NULL;

    //  The variable for the computer\CAName.
    BSTR         bstrCA = NULL;

    //  The variable for the request.
    BSTR         bstrRequest = NULL;

    //  The variable for the attributes.
    BSTR         bstrAttribs = NULL;

    //  The variable for the disposition code.
    long        nDisp;

    HRESULT     hr;

    //  Initialize COM.
    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

    //  Check status.
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx [%x]\n", hr);
        goto error;
    }

    //  Instantiate the CertConfig object.
    hr = CoCreateInstance(CLSID_CCertRequest,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_ICertRequest,
                          (void **)&pCertRequest);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
        goto error;
    }

    //  Specify the certification authority.
    //  Note: In C++, produce one backslash (\) by using two.
    bstrCA = SysAllocString(L"server01\\myCAName");

    //  Create the request (not shown), and assign it to bstrRequest,
    //  for example, use ICEnroll::createPKCS10.

    //  Generate the attributes. In this case, no attributes
    //  are specified.
    bstrAttribs = SysAllocString(L"");
    
    //  Submit the request.
    hr = pCertRequest->Submit(CR_IN_BASE64 | CR_IN_PKCS10, 
                              bstrRequest,
                              bstrAttribs,
                              bstrCA, 
                              &nDisp );
    if (FAILED(hr))
    {
        printf("Failed Submit [%x]\n", hr);
        goto error;
    }
    else
    {
        //  Use the disposition value as needed.
    }

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrRequest)
        SysFreeString(bstrRequest);

    if (NULL != bstrAttribs)
        SysFreeString(bstrAttribs);

    //  Clean up object resources.
    if (NULL != pCertRequest)
        pCertRequest->Release();

    //  Free COM resources.
    CoUninitialize();

Persyaratan

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

Lihat juga

CCertRequest

ICEnroll::createPKCS10

ICertConfig

ICertRequest

ICertRequest2

ICertRequest3