Windows Server 2003 または Windows 2000 を実行しているコンピューターで証明書サービスが起動しない場合があります

この記事では、Windows Server 2003 または Windows 2000 を実行しているコンピューターで Certificate Services (CS) が起動しない可能性がある問題の解決策について説明します。

適用対象: Windows 10 - すべてのエディション、Windows Server 2012 R2
元の KB 番号: 842210

現象

Microsoft Windows Server 2003 または Microsoft Windows 2000 Server を実行しているコンピューターでは、証明書サービスが起動しない可能性があります。

さらに、次のエラー メッセージが、イベント ビューアーのアプリケーション ログに記録される場合があります。

原因

Certificate Services は、開始する前に、証明機関 (CA) に発行されたすべてのキーと証明書を列挙します(キーと証明書の有効期限が切れている場合でも)。 これらの証明書のいずれかがローカル コンピューターの個人用証明書ストアから削除された場合、証明書サービスは開始されません。

解決方法

この問題を解決するには、レジストリ内の証明書の拇印の数が、CA に発行された証明書の数と等しいことを確認します。 証明書がない場合は、不足している証明書をローカル コンピューターの個人用証明書ストアにインポートします。 不足している証明書をインポートしたら、 コマンドを certutil -repairstore 使用して、インポートされた証明書と関連付けられている秘密キー ストアの間のリンクを修復します。

これを行うには、コンピューターが実行されているオペレーティング システムのバージョンに応じて、次のいずれかの方法を使用します。

方法 1: Windows Server 2003

Windows Server 2003 ベースのコンピューターでこの問題を解決するには、次の手順に従います。

手順 1: 不足している証明書を探す

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 詳細については、「 Windows でレジストリをバックアップおよび復元する方法」を参照してください。

証明書の拇印は、この CA に発行されたすべての証明書を示します。 証明書が更新されるたびに、レジストリの CaCertHash リストに新しい証明書の拇印が追加されます。 この一覧のエントリの数は、CA に発行され、ローカル コンピューターの個人用証明書ストアに一覧表示される証明書の数と同じである必要があります。

不足している証明書を探すには、次の手順に従います。

  1. [ スタート] を選択し、[ 実行] を選択し、「regedit」と入力して、[ OK] を選択します

  2. 次のサブキーを見つけて選択します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\**Your_Certificate_Authority_Name*

  3. 右側のウィンドウで、[ CaCertHash] をダブルクリックします。

  4. [値データ] リストに含まれる証明書の拇印の数を書き留めます。

  5. コマンド プロンプトを開始します。

  6. 次のコマンドを入力し、 Enter キーを押します。 certutil -store

    ローカル コンピューターの個人用証明書ストアに一覧表示されている証明書の数を、CaCertHash レジストリ エントリに一覧表示されている証明書の拇印の数と比較します。 数値が異なる場合は、「 手順 2: 不足している証明書をインポートする」に進みます。 数値が同じ場合は、「 手順 3: Windows Server 2003 管理ツール パックをインストールする」に進みます。

手順 2: 不足している証明書をインポートする

  1. [ スタート] を選択し、[ すべてのプログラム] をポイントし、[ 管理ツール] をポイントして、[証明書] を選択 します

    [証明書] が一覧に表示されない場合は、次の手順に従います。

    1. [ スタート] を選択し、[ 実行] を選択し、「mmc」と入力して、[ OK] を選択します

    2. [ファイル] メニューの [スナップインの追加と削除] を選択します。

    3. [追加] を選択します。

    4. スナップインの一覧 [ 証明書] を選択し、[ 追加] を選択します。

      [証明書スナップイン] ダイアログ ボックスが表示されたら、[マイ ユーザー アカウント] を選択し、[完了] を選択します。

    5. [閉じる]、[OK] の順に選択します。

      証明書ディレクトリが Microsoft 管理コンソール (MMC) に追加されました。

    6. [ ファイル ] メニューの [ 名前を付けて保存] を選択し、[ ファイル名 ] ボックスに「Certificates」と入力し、[保存] を選択 します

      今後証明書を開くには、[ スタート] を選択し、[ すべてのプログラム] をポイントし、[ 管理ツール] をポイントして、[証明書] を選択 します

  2. [ 証明書] を展開し、[ 個人用] を展開し、[ 証明書] を右クリックし、[ すべてのタスク] をポイントして、[ インポート] を選択します。

  3. ようこそ ページで、[次へ] をクリックします。

  4. [ インポートするファイル ] ページで、[ファイル ] ボックスにインポートする証明書ファイルの完全パスを入力し、[ 次へ] を選択します。 代わりに、[参照] を選択 、ファイルを検索し、[ 次へ] を選択します。

  5. インポートするファイルが Personal Information Exchange - PKCS #12 (*.PFX) ファイルを使用すると、パスワードの入力を求められます。 パスワードを入力し、[ 次へ] を選択します。

  6. [ 証明書ストア ] ページで、[ 次へ] を選択します。

  7. [ 証明書のインポート ウィザードの完了] ページで 、[ 完了] を選択します。

注:

CA は常に CA 証明書をフォルダーに %systemroot%\System32\CertSvc\CertEnroll 発行します。 そのフォルダーに存在しない証明書が見つかる場合があります。

手順 3: Windows Server 2003 管理ツール パックをインストールする

証明書をインポートした後、Certutil ツールを使用して、インポートされた証明書と関連付けられている秘密キー ストア間のリンクを修復する必要があります。 Certutil ツールは、CA 証明書ツールに含まれています。 Windows Server 2003 CA 証明書ツールは、Windows Server 2003 管理ツール パックにあります。 CA 証明書ツールがコンピューターにインストールされていない場合は、今すぐインストールします。

Windows Server 2003 管理ツール パックをインストールした後、次の手順に従います。

  1. コマンド プロンプトを開始します。

  2. 次のように入力し、 Enter キーを押します。
    cd %systemroot%\system32\certsrv\certenroll

  3. Certenroll フォルダー内の証明書を書き留めます。これは次のようになります: Your_ServerYour_Domain.com_rootca.crt

  4. 次のコマンドを入力し、各コマンドの後に Enter キー を押します。 %systemroot%\system32\certutil -addstore my %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crt%systemroot%\System32\certutil -dump %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crtYour_Server.Your_Domain.com_rootca.crt は、手順 3 でメモした Certenroll フォルダー内の証明書の名前です。

  5. 最後のコマンドの出力の末尾付近に、次のような行が表示されます。
    キー ID ハッシュ(sha1): ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b
    キー ID ハッシュ データは、お使いのコンピューターに固有です。 この行を書き留めます。

  6. 引用符を含む次のコマンドを入力し、 Enter キーを押します。
    %systemroot%\system32\certutil -repairstore my "Key_Id_Hash_Data"

    このコマンドでは、 Key_Id_Hash_Data 手順 4 で説明した行を指定します。 たとえば、次のように入力します。
    %systemroot%\system32\certutil -repairstore my "ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b"

    その後、次の出力が表示されます。

    CertUtil: -repairstore コマンドが正常に完了しました。

  7. 証明書を確認するには、次のように入力し、 Enter キーを押します。
    %systemroot%\system32\certutil -verifykeys このコマンドを実行すると、次の出力が表示されます。

    CertUtil: -verifykeys コマンドが正常に完了しました。

手順 5: Certificate Services サービスを開始する

  1. [ スタート] を選択し、[ 管理ツール] をポイントし、[ サービス] を選択します。
  2. [証明書サービス] を右クリックし、[開始] を選択します。

方法 2: Windows 2000

Windows 2000 ベースのコンピューターでこの問題を解決するには、次の手順に従います。

手順 1: 不足している証明書を探す

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 詳細については、「 Windows でレジストリをバックアップおよび復元する方法」を参照してください。

証明書の拇印は、この CA に発行されたすべての証明書を示します。 証明書が更新されるたびに、レジストリの CaCertHash リストに新しい証明書の拇印が追加されます。 この一覧のエントリの数は、CA に発行され、ローカル コンピューターの個人用証明書ストアに一覧表示される証明書の数と同じである必要があります。

不足している証明書を探すには、次の手順に従います。

  1. [ スタート] を選択し、[ 実行] を選択し、「regedit」と入力して、[ OK] を選択します

  2. 次のサブキーを見つけて選択します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\**Your_Certificate_Authority_Name*

  3. 右側のウィンドウで、[ CaCertHash] をダブルクリックします。

  4. [値データ] リストに含まれる証明書の拇印の数を書き留めます。

  5. コマンド プロンプトを開始します。

  6. 次のように入力し、 Enter キーを押します。 certutil -store

ローカル コンピューターの個人用証明書ストアに一覧表示されている証明書の数を、CaCertHash レジストリ エントリに一覧表示されている証明書の拇印の数と比較します。 数値が異なる場合は、「 手順 2: 不足している証明書をインポートする」に進みます。 数値が同じ場合は、「 手順 3: Windows Server 2003 管理ツール パックをインストールする」に進みます。

手順 2: 不足している証明書をインポートする

  1. [ スタート] を選択し、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[証明書] を選択 します

    [証明書] が一覧に表示されない場合は、次の手順に従います。

    1. [ スタート] を選択し、[ 実行] を選択し、「mmc」と入力して、[ OK] を選択します
    2. [ コンソール ] メニューの [ スナップインの追加と削除] を選択します。
    3. [追加] を選択します。
    4. スナップインの一覧 [ 証明書] を選択し、[ 追加] を選択します。

    [証明書スナップイン] ダイアログ ボックスが表示されたら、[マイ ユーザー アカウント] を選択し、[完了] を選択します。 5. [ 閉じる] を選択します。 6. [ OK] を選択します。7. 証明書ディレクトリが Microsoft 管理コンソール (MMC) に追加されました。 8. [コンソール ] メニューの [ 名前を付けて保存] を選択し、ファイル名として「Certificates」と入力し、[保存] を選択 します

    今後 [証明書] を開くには、[ スタート] を選択し、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[証明書] を選択 します

  2. [ 証明書] を展開し、[ 個人用] を展開し、[ 証明書] を右クリックし、[ すべてのタスク] をポイントして、[ インポート] を選択します。

  3. ようこそ ページで、[次へ] をクリックします。

  4. [ インポートするファイル ] ページで、[ファイル ] ボックスにインポートする証明書ファイルの完全パスを入力し、[ 次へ] を選択します。 代わりに、[参照] を選択 、ファイルを検索し、[ 次へ] を選択します。

  5. インポートするファイルが Personal Information Exchange - PKCS #12 (*.PFX)、パスワードの入力を求められます。 パスワードを入力し、[ 次へ] を選択します。

  6. [ 証明書ストア ] ページで、[ 次へ] を選択します。

  7. [ 証明書のインポート ウィザードの完了] ページで 、[ 完了] を選択します。

注:

CA は常に CA 証明書をフォルダーに %systemroot%\System32\CertSvc\CertEnroll 発行します。 そのフォルダーに存在しない証明書が見つかる場合があります。

手順 3: Windows Server 2003 Certutil ツールをインストールする

証明書をインポートした後、Windows Server 2003 CA Certificate Tools を使用して、インポートされた証明書と関連付けられている秘密キー ストア間のリンクを修復する必要があります。

Windows Server 2003 バージョンの Certutil.exe と Certreq.exe は、Windows Server 2003 管理ツール パックに含まれています。 Windows 2000 ベースのコンピューターにツールをインストールするには、まず Windows Server 2003 管理ツール パックを、Windows Server 2003 または Microsoft Windows XP と Service Pack 1 (SP1) またはそれ以降のサービス パックを実行しているコンピューターにインストールする必要があります。 Windows Server 2003 管理ツール パックを Windows 2000 ベースのコンピューターに直接インストールすることはできません。

重要

Windows Server 2003 CA 証明書ツールを Windows 2000 ベースのコンピューターにコピーすると、Certutil ツールの 2 つのバージョンが Windows 2000 ベースのコンピューターに存在します。 Windows 2000 Certutil ツールは削除しないでください。 他のプログラムは、このツールの Windows 2000 バージョンに依存します。 たとえば、証明書 MMC スナップインには Windows 2000 Certutil ツールが必要です。 さらに、Windows Server 2003 Certcli.dll を登録し、Windows 2000 ベースのコンピューターにファイルを Certadm.dll しないでください。

Windows 2000 ベースのコンピューターで Windows Server 2003 CA 証明書ツールを使用するには、次の手順に従います。

  1. Windows Server 2003 管理ツール パックをダウンロードする

  2. WINDOWS Server 2003 または Windows XP を SP1 またはそれ以降の Service Pack で実行しているコンピューターにサインインします。

  3. Windows Server 2003 管理ツール パックをインストールします。

  4. Windows Server 2003 管理ツール パックで、次のファイルを見つけて、3.5 インチ ディスクなどのリムーバブル 記憶域メディアにコピーします。
    Certreq.exe
    Certutil.exe
    Certcli.dll
    Certadm.dll

  5. Windows 2000 ベースのコンピューターに管理者としてサインインします。

  6. 手順 4 で使用したリムーバブル 記憶域メディアを、Windows 2000 ベースのコンピューターの適切なドライブに挿入します。

  7. コマンド プロンプトを開始します。

  8. 新しいフォルダーを作成し、リムーバブル 記憶域メディア上のファイルを新しいフォルダーにコピーします。 これを行うには、次のコマンドを入力し、各コマンドの後に Enter キー を押します。
    Cd\
    md W2k3tool
    cd w2k3tool
    copy Removable_Media_Drive_Letter:\cert*

    注:

    コンピューターに既に存在する Windows 2000 バージョンの Certutil ツールとの競合を回避するために、システム検索パスに W2k3tool フォルダーを含めないでください。

Windows Server 2003 CA Certificate Tools ファイルを Windows 2000 ベースのコンピューターにコピーしたら、次の手順を実行します。

  1. コマンド プロンプトを開始します。

  2. 次のように入力し、 Enter キーを押します。
    cd %systemroot\system32\certsrv\certenroll

  3. 次のような Certenroll フォルダー内の証明書を書き留めます。
    Your_Server.Your_Domain.com_rootca.crt

  4. 次のコマンドを入力し、各コマンドの後 で Enter キーを 押します。
    Root_Drive_Letter:\w2k3tool\certutil -addstore my %systemroot%\system32\certsrv\certenroll\ Your_Server.Your_Domain.com_rootca.crt
    Root_Drive_Letter:\w2k3tool\certutil -dump %systemroot%\system32\certsrv\certenroll\ Your_Server.Your_Domain.com_rootca.crt

    Root_Drive_Letter はルート ディレクトリの文字です。

    Your_Server.Your_Domain.com_rootca.crt は、手順 3 でメモした Certenroll フォルダー内の証明書の名前です。

  5. 最後のコマンドの出力の終わり付近に、次のような行が表示されます。キー Id Hash(sha1): ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b
    キー ID ハッシュ データは、お使いのコンピューターに固有です。 この行を書き留めます。

  6. 引用符を含む次のコマンドを入力し、 Enter キーを押します。
    Root_Drive_Letter:\w2k3tool\certutil -repairstore my "Key_Id_Hash_Data"
    このコマンドでは、 Key_Id_Hash_Data 手順 5 で説明した行を指定します。 たとえば、次のように入力します。
    c:\w2k3tool\certutil -repairstore my "ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b"

    このコマンドを完了すると、次の出力が表示されます。

    CertUtil: -repairstore コマンドが正常に完了しました。

  7. 証明書を確認するには、次のコマンドを入力し、 Enter キーを押します。
    Root_Drive_Letter:\w2k3tool\certutil -verifykeys

    このコマンドを実行すると、次の出力が表示されます。

    CertUtil: -verifykeys コマンドが正常に完了しました。

手順 5: Certificate Services サービスを開始する

  1. [ スタート] を選択し、[ 管理ツール] をポイントし、[ サービス] を選択します。
  2. [証明書サービス] を右クリックし、[開始] を選択します。

詳細

次のいずれかの条件に該当する場合は、使用を停止し、CA を交換する必要があります。

  • 不足している証明書が見つかりません。

  • 証明書を再インストールできません。

  • 秘密キーが certutil -repairstore 削除されているため、コマンドを完了できません。 使用を停止し、CA を交換するには、次の手順に従います。

    1. 正常に動作しなくなった CA の証明書を取り消します。 これを行うには、次の手順に従います。

      1. 取り消す証明書を発行したコンピューターに管理者としてサインインします。
      2. [ スタート] を選択し、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[ 証明機関] を選択します。
      3. [CA_Name] を展開し、[発行済み証明書] を選択します。
      4. 右側のウィンドウで、取り消す証明書を選択します。
      5. [ アクション ] メニューの [ すべてのタスク] をポイントし、[ 証明書の取り消し] を選択します。
      6. [ 理由コード ] の一覧で、証明書を取り消す理由を選択し、[ はい] を選択します。

      これにより、正常に動作しなくなった CA によって発行されたすべての証明書が取り消されます。

    2. 次に高い CA で証明書失効リスト (CRL) を発行します。 これを行うには、次の手順に従います。

      1. 次に高い CA を実行しているコンピューターに管理者としてサインインします。
      2. [ スタート] を選択し、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[ 証明機関] を選択します。
      3. [CA_Name] を展開し、[失効した証明書] を選択します。
      4. [ アクション ] メニューの [ すべてのタスク] をポイントし、[ 発行] を選択します。
      5. [ はい] を 選択して、以前に発行した CRL を上書きします。
    3. 正常に動作を停止した CA が Active Directory ディレクトリ サービスに発行されている場合は、それを削除します。 Active Directory から CA を削除するには、次の手順に従います。

      1. コマンド プロンプトを開始します。
      2. 次のように入力し、 Enter キーを押します。
        certutil -dsdel CA_Name
    4. CA が正常に動作を停止したサーバーから証明書サービスを削除します。 これを行うには、次の手順に従います。

      1. [スタート] を選択し、[設定] をポイントし、[コントロール パネル] を選択します。
      2. [プログラムの 追加と削除] をダブルクリックし、[ Windows コンポーネントの追加と削除] を選択します。
      3. [コンポーネント] ボックスの一覧で、[証明書サービスのチェック] ボックスをオフにして、[次へ] を選択し、[完了] を選択します
    5. Certificate Services をインストールします。 これを行うには、次の手順に従います。

      1. [ Windows コンポーネントの追加と削除] を選択します
      2. [コンポーネント] ボックスの一覧で、[Certificate Services チェック] ボックスを選択し、[次へ] を選択し、[完了] を選択します
    6. 正常に動作を停止した CA によって発行された証明書を持つすべてのユーザー、コンピューター、またはサービスは、新しい CA からの証明書に登録する必要があります。

注:

この問題が公開キー 基盤 (PKI) 階層のルート CA で発生し、問題を修復できない場合は、PKI 階層全体を置き換える必要があります。 PKI 階層を削除する方法の詳細については、「 Windows エンタープライズ証明機関の使用を停止し、関連するすべてのオブジェクトを削除する方法」を参照してください。