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.
[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 |
---|---|
|
BASE64-Format mit Anfang/Ende. |
|
BASE64-Format ohne Anfang/Ende. |
|
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 |