この記事では、Windows Server を実行しているコンピューターで証明書サービス (CS) が起動しない可能性がある問題の解決策を示します。
元の KB 番号: 842210
現象
Windows Server を実行しているコンピューターでは、証明書サービスが起動しない可能性があります。
さらに、次のエラー メッセージは、イベント ビューアーのアプリケーション ログに記録される可能性があります。
Active Directory 証明書サービスは開始されませんでした: 現在の CA 証明書の読み込みまたは確認に失敗しました。 Contoso CA Keyset は0x80090016存在しません (-2146893802 NTE_BAD_KEYSET)。
原因
証明書サービスは、開始する前に、証明機関 (CA) に発行されたすべてのキーと証明書を列挙します(キーと証明書の有効期限が切れている場合でも)。 これらの証明書のいずれかがローカル コンピューターの個人用証明書ストアから削除されている場合、証明書サービスは開始されません。
解決方法
この問題を解決するには、レジストリ内の証明書の拇印の数が、CA に発行された証明書の数と同じであることを確認します。 証明書がない場合は、不足している証明書をローカル コンピューターの個人用証明書ストアにインポートします。 不足している証明書をインポートしたら、 certutil -repairstore
コマンドを使用して、インポートされた証明書と関連付けられている秘密キー ストア間のリンクを修復します。
この問題を解決するには、次の手順に従います。
手順 1: 不足している証明書を探す
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 その後、問題が起こった場合は、レジストリを復元できます。 詳細については、「 Windows でレジストリをバックアップおよび復元する方法を参照してください。
証明書の拇印は、この CA に発行されたすべての証明書を示します。 証明書が更新されるたびに、新しい証明書の拇印がレジストリの CaCertHash リストに追加されます。 この一覧のエントリの数は、CA に発行され、ローカル コンピューターの個人用証明書ストアに一覧表示されている証明書の数と同じである必要があります。
不足している証明書を検索するには、次の手順に従います。
Startを選択し、「regedit」と入力し、Enter キーを押します。
次のサブキーを見つけて選択します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Your_Certificate_Authority_Name>
右側のウィンドウで、 CaCertHash をダブルクリックします。
Value データリストに含まれる証明書の拇印の数を書き留めます。
コマンド プロンプトを起動します。
次のコマンドを入力して、Enter キーを押します。
certutil -store
ローカル コンピューターの個人用証明書ストアに一覧表示されている証明書の数を、CaCertHash レジストリ エントリに一覧表示されている証明書の拇印の数と比較します。 数値が異なる場合は、「 手順 2: 不足している証明書をインポートするに移動します。 数値が同じ場合は、「 手順 3: リンクを修復するに移動します。
手順 2: 不足している証明書をインポートする
- Startを選択し、「mmc」と入力し、Enter キーを押します。
- [ファイル] メニューの [スナップインの追加と削除] を選択します。
- Snap-inの一覧で Certificates を選択し、追加を選択します。
- Certificates スナップインダイアログ ボックスが表示されたら、Computer account を選択し、次>Finishを選択します。
- [OK] を選択します。 これで、証明書ディレクトリが Microsoft 管理コンソール (MMC) に追加されました。
- Certificates>Personal を展開し、Certificatesを右クリックし、[すべてのタスク] をポイントして、[Import を選択します。
- [ようこそ] ページで [次へ] をクリックします。
- [インポートするファイルの ] ページで インポートする証明書ファイルの完全なパスを [ ファイル名 ボックスに入力し、 次へを選択します。 代わりに、 Browse を選択し、ファイルを検索して、[次へ ] を選択。
- インポートするファイルが個人情報 Exchange-PKCS #12 (*.PFX) ファイルを開くと、パスワードの入力を求められます。 パスワードを入力し、 このキーをエクスポート可能としてマーク インポート オプションを選択し、 Nextを選択します。
- Certificate Store ページで、Next を選択します。
- 証明書のインポート ウィザードの完了 ページで、Finish を選択します。
Note
CA は、既定で ca 証明書を %systemroot%\System32\CertSvc\CertEnroll フォルダーに発行します。 そのフォルダーに見つからない証明書が見つかる場合があります。
手順 3: リンクを修復する
リンクを修復するには、次の手順に従います。
コマンド プロンプトを開きます。
次のコマンドを入力して、Enter キーを押します。
cd %systemroot%\system32\certsrv\certenroll
certenroll フォルダー内の次のような証明書を書き留めます。
<Your_Server>. <Your_Domain>.com_rootca.crt
次のコマンドを入力し、各コマンドの後に Enter キーを押します。
certutil -addstore my %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crt
certutil -dump %systemroot%\system32\certsrv\certenroll\Your_Server.Your_Domain.com_rootca.crt
<Your_Server>.<Your_Domain>.com_rootca.crt
は、手順 3 で書き込んだ certenroll フォルダー内の証明書の名前です。最後のコマンドの出力の末尾付近に、次のような行が表示されます。
Key Id Hash(sha1): ea c7 7d 7e e8 cd 84 9b e8 aa 71 6d f4 b7 e5 09 d9 b6 32 1b
Key Id Hash
データは、お使いのコンピューターに固有です。 この行を書き留めます。引用符を含む次のコマンドを入力し、 Enter キーを押します。
%systemroot%\system32\certutil -repairstore my "<Key_Id_Hash_Data>"
このコマンドでは、
Key_Id_Hash_Data
は手順 5 で説明した行です。 たとえば、次を入力します。
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 command completed successfully.
証明書を確認するには、次のコマンドを入力し、 Enter キーを押します。
certutil -verifykeys
このコマンドを実行すると、次の出力が表示されます。
CertUtil: -verifykeys command completed successfully.
手順 4: Certificate Services サービスを開始する
- スタートを選択し、管理ツールをポイントして、サービスを選択します。
- Certificate Services を右クリックし、Start を選択します。
詳細
次のいずれかの条件に該当する場合は、CA を使用停止にして置き換える必要があります。
- 不足している証明書が見つかりません。
- 証明書を再インストールすることはできません。
- 秘密キーが削除されたため、
certutil -repairstore
コマンドを完了できません。
Note
この問題が公開キー 基盤 (PKI) 階層のルート CA で発生し、問題を修復できない場合は、PKI 階層全体を置き換える必要があります。 PKI 階層を削除する方法の詳細については、「 Windows エンタープライズ証明機関の使用を停止し、関連するすべてのオブジェクトを削除する方法を参照してください。