Freigeben über


ICertAdmin::ImportCertificate-Methode (certadm.h)

Die ImportCertificate-Methode verwendet ein zuvor ausgestelltes Zertifikat und importiert es in die Datenbank der Zertifizierungsstelle . Diese Methode wurde zuerst in der ICertAdmin-Schnittstelle definiert.

Die Anforderungen, die das Zertifikat erfüllen muss, um erfolgreich importiert zu werden, finden Sie unter Hinweise.

Syntax

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

Parameter

[in] strConfig

Stellt eine gültige Konfigurationszeichenfolge für die Zertifizierungsstelle im Format COMPUTERNAME\CANAME dar, wobei COMPUTERNAME der Netzwerkname des Zertifikatdiensteservers und CANAME der allgemeine Name der Zertifizierungsstelle ist, wie er während der Einrichtung der Zertifikatdienste eingegeben wurde. Informationen zum Namen der Konfigurationszeichenfolge finden Sie unter ICertConfig.

WichtigImportCertificate löscht den internen Cache nicht, wenn die Konfigurationszeichenfolge geändert wird. Wenn Sie die Konfigurationszeichenfolge für die Zertifizierungsstelle ändern, müssen Sie ein neues ICertAdmin-Objekt instanziieren und diese Methode erneut mit der neuen Konfigurationszeichenfolge aufrufen.
 

[in] strCertificate

Die binäre Darstellung des importierten Zertifikats.

[in] Flags

Gibt das Format des Zertifikats an. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
CR_IN_BASE64HEADER
BASE64-Format mit Anfang/Ende.
CR_IN_BASE64
BASE64-Format ohne Anfang/Ende.
CR_IN_BINARY
Binärformat.

[out] pRequestId

Ein Zeiger auf einen LONG-Wert , der die datenbankseitig zugewiesene Anforderungs-ID für das importierte Zertifikat empfängt.

Rückgabewert

C++

Wenn die Methode erfolgreich ist und der pRequestID-Parameter auf den Wert der datenbankseitig zugewiesenen Anforderungs-ID für das importierte Zertifikat festgelegt ist, gibt die Methode S_OK zurück.

Wenn die Methode fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

VB

Der Rückgabewert ist die datenbankseitig zugewiesene Anforderungs-ID für das importierte Zertifikat.

Hinweise

Die ImportCertificate-Methode ist nützlich für eine Zertifizierungsstelle, die teilweise aus der Sicherung wiederhergestellt wurde: Wenn sich ein Zertifikat nicht auf den Sicherungsbändern befindet, die zum Wiederherstellen der Zertifizierungsstelle verwendet werden, sondern in einer Datei vorhanden ist, kann das Zertifikat mithilfe dieser Methode importiert werden.

Damit diese Methode erfolgreich ist, muss das importierte Zertifikat zuvor von der in strConfig angegebenen Zertifizierungsstelle ausgestellt worden sein. Die wiederhergestellte Zertifizierungsstelle überprüft die Signatur des Zertifikats, und wenn die Signatur ungültig ist, schlägt der Methodenaufruf fehl.

Darüber hinaus können Sie kein Zertifikat importieren, wenn es bereits in der Datenbank vorhanden ist. Jedes Zertifikat in der Datenbank muss eindeutig sein. Die Datenbank stellt die Eindeutigkeit sicher, indem die Seriennummer des Zertifikats überprüft wird.

Beispiele

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile certadm.h (include Certsrv.h)
Bibliothek Certidl.lib
DLL Certadm.dll

Weitere Informationen

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig