Windows Server 2008 R2 Hyper-Vホストで VMMS12510 エラーの対処法

スポンサーリンク
Windows Server 2008 R2 上でHyper-V 仮想マシンを立てている環境において、
このような警告がイベントログに記録されることがあります。

=================================================================
ログの名前: Microsoft-Windows-Hyper-V-VMMS-Admin
ソース: Microsoft-Windows-Hyper-V-VMMS
イベント ID: 12510
レベル: 警告
ユーザー: SYSTEM
説明:サーバー認証に使用される証明書の有効期限は 30 日間です。証明書の有効期限が切れると、仮想マシンへのリモート アクセスはできなくなります。証明書を更新するか、再作成してください。
=================================================================

このイベントに対する対処法を記載していきます。


<内容>
Hyper-V マネージャーと仮想マシンのコンソール セッションをつなぐ際 (vmconnect) には、内部的にRDPプロトコルが
使用されており、このRDP接続のために利用される証明書の有効期限が切れる旨を示しています。

本イベントによる影響範囲はHyper-Vマネージャーと仮想マシンとのコンソールセッションに対してのみであり、仮想マシン自体の動作や仮想マシンに対する通常の RDP 接続においては影響を及ぼすものではありません。
具体的にはHyper-VマネージャコンソールやSCVMMで仮想マシンを操作する際に、マウスカーソルが動かなくなったり、画面解像度が既定のサイズになり画面の一部しか表示されなくなったりします。

<原因>
初期構築時に有効期限が1年後の証明書が自動作成されます。(従って本イベントが記録されるのは構築後1年経過する時期です。)
通常は証明書は有効期限が切れた時点(本イベント記録後30日後)で自動的に再作成されます。
再作成された証明書は仮想マシンの起動時に vmwp (virtual machine worker process) により読み込まれますが、本番環境に多い仮想マシンを起動しっぱなしの状態だとvmwpが更新が行われたことを認識できずにマウスや解像度の問題が発生します。

<対応>
対応方法としては大きく2つあります。

1.自動的に再作成された証明書をvmwpに認識させる。
証明書が自動的に再作成されると以下のイベントが記録されます。

=======================================================
ログの名前: Microsoft-Windows-Hyper-V-VMMS-Admin
ソース: Microsoft-Windows-Hyper-V-VMMS
イベント ID: 12520
レベル: 警告
説明:
サーバー認証用の自己署名証明書を自動生成しています。
=======================================================

このイベントが記録されたら仮想マシンを再起動、もしくは保存 -> 復元を行うことで、vmwpに認識させることができます。
ただし全ての仮想マシンで行う必要があること、1年ごとに運用でこの操作を行う必要があり少々面倒です。



2.恒久対策として有効期限の長い証明書を作成する。
有効期限が1年よりもっと長い証明書を作成すれば、1年おきに仮想マシンを再起動する必要は無くなります。
また運用上仮想マシンの再起動や、保存 -> 復元作業が行えない場合は以下の手順で有効期限の長い(2050年まで)証明書を作成できます。

—————————————————————-
– 証明書有効期限の延長について
・次のマイクロソフト Web サイトから PowerShell スクリプトをコピーします。
Script Create a Hyper-V VMMS self-signing certificate that doesn’t expire until 2050
This script creates a Hyper-V VMMS self-signing certificate for Windows Server 2008 R2 systems that doesn’t expire until 2050.

・スクリプトをメモ帳に貼り付け、Cert.ps1 という名前でファイルを保存します。
・Makecert.exe を Cert.ps1 ファイルと同じディレクトリにコピーします。
Makecert.exe の入手方法の詳細については、以下のマイクロソフト Web サイトを
参照してください。
http://msdn.microsoft.com/ja-jp/library/aa386968(VS.85).aspx

・管理者特権を持つ Windows PowerShell コマンド プロンプトを開きます。
・Cert.ps1 スクリプトを実行します。
※有効期限 2050 年の証明書自動生成 + 仮想マシン保存->起動を上記スクリプトで自動実行されます。
注: 本スクリプトはドメイン環境向けとなります。また、スクリプトを実行すると、
稼働中のゲスト OS は保存・開始されますのでご注意ください。
—————————————————————-

スクリプトは既定ではポリシーにより実行できないため、Cert.ps1 スクリプト実行時に以下のコマンドを実行します。
—————————————————————-
> Get-ExecutionPolicy
※上記実行結果を記録しておきます。
多分Restricted。
> Set-ExecutionPolicy RemoteSigned
※上記で「y」を入力します。

スクリプト実行後は以下を実行してポリシー設定を元に戻します。
> Set-ExecutionPolicy RemoteSigned (Get-ExecutionPolicyで表示された文言)
—————————————————————-


また、下記手順にて証明書の有効期限が 2050 年に延長されているかどうかの確認が
行えます。

—————————————————————-
・[スタート] をクリックして、[ファイル名を指定して実行] をクリックし、mmc と入力して [OK] をクリックします。
・[ファイル] メニューの [スナップインの追加と削除] をクリックします。
・[証明書] をクリックし、[追加] をクリックします。
・[サービス アカウント] をクリックし、[次へ] をクリックします。
・[ローカル コンピューター] をクリックし、[次へ] をクリックします。
・[Hyper-V Virtual Machine Management] をクリックし、[完了] をクリックします。
・[スナップインの追加と削除] ウィンドウを閉じるには、[OK] をクリックします。
・[証明書 – サービス] – Vmms\信頼されたルート証明機関 を展開し、[証明書]をクリックします。
・中央ペインより “発行先”と”発行者”が Hyper-V のホスト名で、”有効期限”が2050/01/01 の証明書が生成されている事を確認します。
—————————————————————-


Cert.ps1 はHyper-Vホストで実行しますが、クラスタ環境の場合はホスト台数分それぞれで実行します。
更新する証明書はクラスタとは無関係のものとなるため、クラスタ環境にて実行するからといった懸念はありません。

 

コメント

タイトルとURLをコピーしました