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」を参照してください。

重要ImportCertificate は、構成文字列が変更されたときに内部キャッシュをクリアしません。 CA の構成文字列を変更する場合は、新しい ICertAdmin オブジェクトをインスタンス化し、新しい構成文字列を使用してこのメソッドを再度呼び出す必要があります。
 

[in] strCertificate

インポートされる証明書のバイナリ表現。

[in] Flags

証明書の形式を指定します。 このパラメーターには、次の値のいずれかを指定できます。

意味
CR_IN_BASE64HEADER
BASE64 形式と begin/end。
CR_IN_BASE64
開始/終了なしの BASE64 形式。
CR_IN_BINARY
バイナリ形式。

[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

こちらもご覧ください

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig