Windows 2012 R2環境でRDSクラスターを作成する場合,証明書をインストールしなければ,リモートデスクトップ時に下図のような証明書エラーが出てしまいます。
そこで,証明書を発行し,通常の方法でServer Managerから証明書をインストールするものの,なぜか証明書エラーが解消しません。
Session Hostサーバーが複数台ある場合,一台だけは問題なく接続できるのに,もう一台に繋がる場合だけ証明書エラーが出るという事もあります。
そのようなときには,何らかの原因により,各Session Hostサーバーに対して,証明書が正しくインストールされていないということが考えられます。
ちなみに,各Session Hostサーバーに手動で証明書をインストールしてみても,問題は継続します。
証明書はWMIの設定に格納されている
実は,この証明書は,WMIのWin32_TSGeneralSettingという値に設定が格納されています。
では,Session Hostサーバーに証明書をインストールし,そのWMIの設定値を修正してみましょう。
RDPで使用される証明書を確認する
まずは,PowerShellを管理者で実行し,以下のコマンドを流します。
gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
出力された値の中から,CertificateNameを探してください。すると,空欄になっているか,クラスター名ではなく,Session Hostサーバーの名前が入っているかもしれません。その場合は修正が必要ですので,続く手順に進みます。
Session Hostサーバーにクラスター用の証明書をインストールする
証明書ファイルをSession Hostサーバー上にコピーし,ダブルクリックしてインストールします。
その後,以下のコマンドをPowerShellで流してください。
dir cert:\LocalMachine\My
すると,インストールされた証明書のThumbprintの値が表示されますので,それをコピーします。
RDSクラスター用の証明書をRDP接続で使用するように設定する
上記でコピーしたThumbprintの値を用いて,以下の2行をPowerShellで流します。
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="コピーしたThumbprintの値"}
これで,RDP接続で用いられる証明書が,自己署名証明書ではなく,RDSクラスター用に発行した証明書に置き換わりました。
以下のコマンドを再度流すと,そのことを確認できます。
gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
この手順を,すべてのSession Hostサーバー上で行います。
これで,RDSクラスターに接続する際の証明書エラーを解消することができました。
ちなみに,証明書を作成する際には,SAN(Subject Alternate Name)に,すべてのSession Hostサーバーの名前とクラスター名などが含まれている必要があることにも注意です。
ご不明な点があれば,コメント欄でお知らせください。
コメント