Share via


"CNG Key Isolation" サービスが 無効化による RDP 接続不可について (イベント ID 1057/36870)

皆さん、こんにちは。

今回は、Windows Server 2012 R2 にて、2017 年 3 月 プレビュー以降の更新プログラム適用後に、リモート デスクトップ接続ができなくなった という事例について紹介します。

 

1. 事象

本事象が発生した場合、リモート デスクトップ接続を行おうとすると、接続元クライアントには以下のエラー メッセージが表示されます。

また同時に、接続先サーバーでは以下のエラーログが記録されます。

--------
イベント ID : 1057
RD セッション ホスト サーバーで、SSL 接続時に RD セッション ホスト サーバー認証に使用する、新規の自己署名証明書を生成できませんでした。関連する状態コードは エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。
--------

--------
イベント ID : 36870
SSL サーバー 資格情報の秘密キーにアクセスしようとしているときに致命的なエラーが発生しました。暗号化モジュールから返されたエラー コードは 0x8009030D です。内部エラーの状態は 10001 です。
--------

これらの原因と回避策について紹介します。

 

2. 原因

---------
事象の発生条件
---------

この事象は、以下の条件を満たすと発生します。

 ・ Windows Server 2012 R2 を利用している
・ 2017 年 3 月のマンスリー ロールアップのプレビュー (KB4012219) 以降の更新プログラムを適用している
・ "CNG Key Isolation" サービスが 無効化 されている

上記の条件を満たしていると、リモート デスクトップ接続時に使用される証明書が正常に作成されなくなり、リモート デスクトップ接続ができない事象が発生します。
これは、リモート デスクトップ接続に使用される証明書の署名アルゴリズムが KB4012219 で変更されたことが原因となります。

 

---------
Remote Desktop 証明書について
---------

リモート デスクトップ接続をする際、リモート デスクトップ接続の通信を暗号化するために、既定の設定では、接続先コンピューター内の Remote Desktop ストアにある自己署名証明書 (以降 Remote Desktop 証明書 と表記) が利用されます。
Remote Desktop 証明書は以下の場所で確認できます。


[確認手順]
1. Win + R キーを押し、[ファイル名を指定して実行] にて、"certlm.msc"と入力し、[OK] をクリックします。
2. [証明書 – ローカル コンピューター] の左ペインにて、
[リモート デスクトップ] ([Remote Desktop] と英語表記の場合もあります) – [証明書] を選択します。
3. その中に格納されている証明書が、Remote Desktop 証明書となります。
---------

Remote Desktop 証明書は、"Remote Desktop Configuration" (SessionEnv) サービスによって管理されており、証明書がない場合は作成、有効期限が切れている場合は更新 (再作成) の処理が発生します。Remote Desktop 証明書の有効期限は一律 6 ヶ月 となっております。また、SessionEnv サービスは、サービスが起動時 及び 起動後 12 時間周期でこの証明書の有効期限を確認しており、更新の必要があると判断された場合、証明書の更新が実行されます。

この証明書の署名アルゴリズムが、KB4012219 によって変更されました。これにより、証明書の作成プロセスで "CNG Key Isolation" サービスを利用する動作となりました。しかしながら、"CNG Key Isolation" サービスが無効化されている場合、証明書の作成処理が行えず、Remote Desktop 証明書が作成することが出来ません。
結果として、リモート デスクトップ接続ができなくなる事象が発生します。

 

---------
署名アルゴリズムについて
---------

これまで、Remote Desktop 証明書は、署名アルゴリズムとして SHA1 アルゴリズムを利用していました。SHA1 とは、米国の国立標準技術研究所によって 1995 年に制定されたハッシュを生成するためのアルゴリズムです。元データを元にハッシュを算出することで、対象の内容 (データ) に改ざんがないかを確認することができます。
しかしながら、SHA1 アルゴリズムに、異なる元データであるにも関わらず同一のハッシュ値が算出されてしまう問題が発生する可能性があることが判明しております。

この問題の発覚により、全世界的に SHA1 から より安全なアルゴリズムへの移行が推奨されております。弊社においても、SHA1 を段階的に廃止する措置を実施し、SHA2 への移行を推進しています。

--- 参考情報 ---
FAQ: SHA-1 廃止/SHA-2 移行に関するマイクロソフトのポリシー

https://blogs.technet.microsoft.com/jpsecurity/2015/11/02/faq-sha-1-sha-2/
---

この SHA1 廃止の影響により、2017 年 3 月のマンスリー ロールアップのプレビュー (KB4012219) にリモート デスクトップ サービスで作成される自己署名証明書のハッシュアルゴリズムを SHA2 に変更する更新が加えられております。

 

3. 事象と合致しているかの確認手順

まずは、2017 年 3 月以降の更新プログラムが適用されているか確認します。

---該当のセキュリティパッチが適用されているかを確認する手順---

1 : 事象発生サーバーに管理者権限でログインします
2 : キーボードから [Windows] + [R] (ファイル名を指定して実行) にて、"cmd" と入力し、[OK] をクリックします。
3 : 以下のコマンドを入力します

 > wmic qfe list

※ 対象の KB を確認する場合は以下のようにコマンドを実行します
※ なお、検索対象の文字列のみ検索します

 > wmic qfe list | findstr <検索対象>

例 ) wmic qfe list | findstr 4012219

---------

次に、該当のセキュリティパッチがマシンに適用されているかの確認 及び "CNG Key Isolation" サービスの状態を確認します。

---"CNG Key Isolation" サービスの状態確認手順---

1 : 事象発生サーバーに管理者権限でログインします
2 : キーボードから [Windows] + [R] (ファイル名を指定して実行) にて、"services.msc" と入力し、[OK] をクリックします。
3 : "CNG Key Isolation" を選択し、[サービスの状態] を確認します
---------

該当のセキュリティパッチが適用されており、"CNG Key Isolation" サービスが有効でない場合は、以下の手順にて設定を変更し、事象が改善されるかをご確認ください。

 

4. 事象回避手順

1 : 事象発生サーバーに管理者権限でログインします
2 : キーボードから [Windows] + [R] (ファイル名を指定して実行) にて、"services.msc" と入力し、[OK] をクリックします
3 : "CNG Key Isolation" を選択します
4 : 右クリックし [プロパティ] を選択します
5 : [スタートアップの種類] を "手動" に設定します
6 : 事象発生サーバーを再起動します
7 : 再起動後、正常にリモート デスクトップ接続ができることを確認します