ICertAdmin::ImportCertificate メソッド (certadm.h)
ImportCertificate メソッドは、以前に発行された証明書を受け取り、証明機関の (CA) データベースにインポートします。 このメソッドは、最初に ICertAdmin インターフェイスで定義されました。
証明書を正常にインポートするために満たす必要がある要件については、「解説」を参照してください。
構文
HRESULT ImportCertificate(
[in] const BSTR strConfig,
[in] const BSTR strCertificate,
[in] LONG Flags,
[out] LONG *pRequestId
);
パラメーター
[in] strConfig
COMPUTERNAME\CANAME という形式の証明機関の有効な構成文字列を表します。COMPUTERNAME は証明書サービス サーバーのネットワーク名で、CANAME は証明書サービスのセットアップ時に入力された証明機関の共通名です。 構成文字列名の詳細については、「 ICertConfig」を参照してください。
[in] strCertificate
インポートされる証明書のバイナリ表現。
[in] Flags
証明書の形式を指定します。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
BASE64 形式と begin/end。 |
|
開始/終了なしの BASE64 形式。 |
|
バイナリ形式。 |
[out] pRequestId
インポートされた証明書のデータベース割り当て要求 ID を受け取る LONG 値へのポインター。
戻り値
C++
メソッドが成功し、 pRequestID パラメーターがインポートされた証明書のデータベース割り当て要求 ID の値に設定されている場合、メソッドは S_OKを返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。
VB
戻り値は、インポートされた証明書のデータベース割り当て要求 ID です。注釈
ImportCertificate メソッドは、バックアップから部分的に復元された証明機関の場合に役立ちます。証明機関の復元に使用されるバックアップ テープに証明書がないがファイルに存在する場合は、この方法を使用して証明書をインポートできます。
このメソッドを成功させるには、インポートする証明書が 、strConfig で指定された証明機関によって以前に発行されている必要があります。 復元された証明機関は証明書の署名を検証し、署名が無効な場合、メソッド呼び出しは失敗します。
さらに、データベースに証明書が既に存在する場合は、証明書をインポートできません。 データベース内の各証明書は一意である必要があります。 データベースは、証明書のシリアル番号を確認することで一意性を確保します。
例
// 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);
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | certadm.h (Certsrv.h を含む) |
Library | Certidl.lib |
[DLL] | Certadm.dll |