Http <-> 暗号化デッドロックにより、SSL 対応のブートとサービスの開始エラーが遅くなります

この記事では、起動速度が低下し、サービスの起動に失敗する問題の回避策について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 2004121

現象

次の現象が発生する可能性があります。

  • Windows Server は、コンピューター設定の適用またはセキュリティ ポリシーの適用時に起動後にハングします。
  • サーバーの起動が完了すると、ログオンを試みるユーザーが [ユーザー設定の適用] でハングする可能性があります。
  • [開始の種類] に [自動] に設定されているサービスが起動しないことがあります。

"自動" に設定されている特定のサービスは、問題なく開始される場合があります(例:

  • Dcom プロセス起動ツール
  • リモート プロシージャ コール
  • イベント ログ
  • グループ ポリシー クライアント
  • Plug and Play
  • DHCP クライアント
  • DNS クライアント
  • タスク スケジューラ
  • 基本フィルター エンジン
  • Workstation Service
  • Netlogon

"自動" に設定されているその他のサービスは、次のように失敗する可能性があります。

  • 印刷スプーラー
  • ターミナル サービス
  • サーバー サービス
  • リモート レジストリ
  • WMI
  • Distributed Transaction Coordinator
  • アプリケーションに関連するすべてのサービス

スタートアップの種類が "自動" のサービスを手動で開始しようとすると、エラー 1053 が発生し、"サービスが開始要求または制御要求にタイムリーに応答しなかった" ことを示す可能性があります。

原因

「現象」セクションで説明されている問題は、Service Control Manager (SCM) データベースのロックが原因で発生します。 ロックの結果、SCM データベースにアクセスしてサービス開始要求を初期化することはできません。 この記事で説明する問題の影響を受ける Windows コンピューターを確認するには、コマンド プロンプトからコマンドを実行 sc querylock します。

次の出力は、SCM データベースがロックされていることを示しています。

QueryServiceLockstatus - Success
IsLocked: True
LockOwner: .\NT Service Control Manager
LockDuration: 1090 (取得後の秒)
イベント ログには、サービスの起動要求がタイムアウトしたことを示す、Service Control Manager からの情報を超える追加情報はありません。基になる根本原因は、Service Control Manager と HTTP.SYS の間のデッドロックです。

解決方法

この問題を回避するには、最初に開始される別のサービスに依存するように HTTP.SYS の動作を変更できます。 これを実現するには、以下の手順を実行します。

  1. レジストリ エディターを開きます。
  2. HKLM\SYSTEM\CurrentControlSet\Services\HTTP 移動し、次の複数文字列値 DependOnService を作成します。
  3. 新しい DependOnService エントリをダブルクリックします。
  4. [値データ] フィールドに「 CRYPTSVC 」と入力し、[OK] をクリック します
  5. サーバーを再起動します。

注:

システムに変更を加える前に、レジストリ/影響を受けるキーのバックアップを作成してください。

詳細

Windows Server 2008 以降、Windows では、すべての自動サービスの起動を待機して Explorer.exe を読み込むわけではありません。 起動パフォーマンスを向上させるには、サービスを [遅延自動開始] に設定できます。