Metode ICertAdmin::ImportCertificate (certadm.h)

Metode ImportCertificate mengambil sertifikat yang diterbitkan sebelumnya dan mengimpornya ke database otoritas sertifikasi (CA). Metode ini pertama kali didefinisikan dalam antarmuka ICertAdmin .

Untuk persyaratan yang harus dipenuhi sertifikat agar berhasil diimpor, lihat Keterangan.

Sintaks

HRESULT ImportCertificate(
  [in]  const BSTR strConfig,
  [in]  const BSTR strCertificate,
  [in]  LONG       Flags,
  [out] LONG       *pRequestId
);

Parameter

[in] strConfig

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

ImportCertificatepenting 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] strCertificate

Representasi biner sertifikat yang sedang diimpor.

[in] Flags

Menentukan format sertifikat. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
CR_IN_BASE64HEADER
Format BASE64 dengan awal/akhir.
CR_IN_BASE64
Format BASE64 tanpa awal/akhir.
CR_IN_BINARY
Format biner.

[out] pRequestId

Penunjuk ke nilai LONG yang menerima ID permintaan yang ditetapkan database untuk sertifikat yang diimpor.

Menampilkan nilai

C++

Jika metode berhasil, dan parameter pRequestID diatur ke nilai ID permintaan yang ditetapkan database untuk sertifikat yang diimpor, metode mengembalikan S_OK.

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

VB

Nilai yang dikembalikan adalah ID permintaan yang ditetapkan database untuk sertifikat yang diimpor.

Keterangan

Metode ImportCertificate berguna dalam kasus otoritas sertifikasi yang telah dipulihkan sebagian dari cadangan: Jika sertifikat tidak ada pada kaset cadangan yang digunakan untuk memulihkan otoritas sertifikasi tetapi ada dalam file, sertifikat dapat diimpor dengan metode ini.

Agar metode ini berhasil, sertifikat yang diimpor harus telah diterbitkan sebelumnya oleh otoritas sertifikasi yang ditentukan dalam strConfig. Otoritas sertifikasi yang dipulihkan akan memvalidasi tanda tangan sertifikat, dan jika tanda tangan tidak valid, panggilan metode akan gagal.

Selain itu, Anda tidak dapat mengimpor sertifikat jika sudah ada dalam database. Setiap sertifikat dalam database harus unik. Database memastikan keunikan dengan memeriksa nomor seri sertifikat.

Contoh

// This code imports a binary certificate file.
BSTR   bstrCert = NULL;  // Variable for certificate.
HANDLE hFile;  
DWORD  cchFile, cbRead;
LONG   nID;  // Variable for request ID.

// Open the file that contains the certificate.
hFile = CreateFile((LPCSTR) "d:\\cert1.cer",
                  GENERIC_READ,
                  FILE_SHARE_READ,
                  NULL,
                  OPEN_EXISTING,
                  0,
                  NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
    printf("Unable to open file\n");
    // Take error action as needed.
}
// Determine the file size.
cchFile = GetFileSize(hFile, NULL);
if ( (DWORD)-1 == cchFile )
{
    printf("Failed GetFileSize\n");
    CloseHandle(hFile);
    // Take error action as needed.
}
// Allocate the memory for the certificate.
bstrCert = SysAllocStringByteLen(NULL, cchFile);
if (NULL == bstrCert)
{
    printf("Failed SysAllocStringByteLen\n");
    CloseHandle(hFile);
    // Take error action as needed.
}
// Read in the certificate.
if (!ReadFile(hFile,
             (char *)bstrCert,
             cchFile,
             &cbRead,
             NULL) || (cbRead != cchFile))
{
    printf("Failed to successfully read file\n");
    CloseHandle(hFile);
    SysFreeString(bstrCert);
    // Take error action as needed.
}
// Close the file.
CloseHandle(hFile);

// Import the certificate.
bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (FAILED(hr))
{
    printf("Failed to allocate memory for bstrCA\n");
    SysFreeString(bstrCert);
    // Take error action as needed.
}

hr = pCertAdmin->ImportCertificate(bstrCA,
                                   bstrCert,
                                   CR_IN_BINARY,
                                   &nID);
if (FAILED(hr))
    printf("Failed ImportCertificate [%x]\n", hr);
else
    printf("Imported certificated has Request ID: %d\n", nID);

SysFreeString(bstrCert);
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