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.
Salah satu bendera nilai format berikut dapat digunakan untuk menentukan jenis permintaan.
Nilai | Makna |
---|---|
|
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. |
|
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. |
|
Permintaan Manajemen Sertifikat melalui CMS (CMC). |
|
Coba semua format CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7, atau CR_IN_PKCS10. |
|
Permintaan Keygen (format Netscape). |
|
Permintaan PKCS #7 (agen perpanjangan atau pendaftaran). |
|
Permintaan PKCS #10. |
|
Kirim pesan menggunakan RPC alih-alih DCOM. |
|
Mengembalikan respons CMC penuh. |
|
Sertakan daftar pencabutan sertifikat saat ini. |
|
Gunakan konteks komputer layanan kunci. |
|
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:
|
|
Jangan sertakan dalam data permintaan yang mengidentifikasi klien.
Windows Server 2008 dan Windows Server 2003: Bendera ini tidak didukung. |
|
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" |
[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 |
---|---|
|
Permintaan ditolak |
|
Permintaan gagal |
|
Permintaan tidak selesai |
|
Sertifikat dikeluarkan |
|
Sertifikat dikeluarkan secara terpisah |
|
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 |