Hyper-V 向けに Windows 証明書サーバーから SSL 証明書をリクエストする方法
Hyper-V には、ある Hyper-V ホストから別の Hyper-V ホストへの仮想マシンのレプリケーションを行うための組み込みツールが用意されています。これは、障害発生時のフェイルオーバーに役立ちます。 多くの場合、Hyper-V レプリケーションは、Active Directory ドメインに接続され、クラスター内に配置された Hyper-V サーバー上で構成されます。しかし、Hyper-V を実行しているサーバーがワークグループ内にある場合でも、Hyper-V レプリケーションを構成することは可能です。これを行うには、証明書が必要です。
このブログ記事では、Windows Server 2016 の組み込みツールを使用して、ワークグループ内で Hyper-V レプリケーションを構成するための証明書を作成する方法について説明します。
なぜHyper-Vに証明書を使用するのか
証明書ベースのレプリケーションを使用すると、Hyper-VホストをWindowsドメインまたはクラスターに追加することなく、仮想マシンをレプリケートすることができます。この機能は、クラスターを展開し、Active Directoryを使用してドメインを構成することを望まない3〜4台のサーバーを持つ小規模企業に特に便利です。
ワークグループでの証明書を使用したHyper-Vレプリケーションを使用するもう1つの理由はセキュリティです。VMレプリケーションプロセスに関与するHyper-Vサーバーがドメインのメンバーである場合、Active Directory管理アカウントの資格情報を持つユーザーがいれば、これらのHyper-Vサーバーを完全に制御することが可能です。ランサムウェア攻撃のような望ましくないシナリオでは、ADドメイン管理者の資格情報を用いて攻撃者がアクセスできるリソースのすべての情報を破壊することができます。それが、ワークグループにVMレプリケーション用のHyper-Vサーバーを残しておく方が安全である場合がある理由です。
Hyper-Vは2種類の認証方法をサポートしています:KerberosとHTTPS証明書です。KerberosはActive Directoryドメイン内のコンピューター用であり、HTTPS証明書は非ドメイン環境で使用されます。HTTPSセキュア接続を使用する際にはSSL証明書リクエストが行われます。
主要なステップの概要
ワークグループで証明書を使用してHyper-Vレプリケーションを構成するために実行する必要がある主なステップを詳しく説明する前に列挙してみましょう。
- 両方のHyper-Vサーバーでホスト名を設定します。Hyper-Vサーバーロールが有効にする必要があります。
- Windows ファイアウォールでHTTPSトラフィックと必要なインバウンド接続を有効にします。
- 最初のサーバーで証明書を作成および構成します。証明書をエクスポート/インポートします。
- 証明書を2番目のサーバーにコピーします。
- 証明書を使用して2番目のサーバーでレプリケーションを構成します。
- 最初のサーバーでレプリケーションを構成します。VMにはチェックポイントがないことが必要です。
私たちのブログ投稿では、Hyper-Vロールがインストールされた2台のWindows Server 2016マシンを使用しています。
サーバーでのホスト名の設定
ホスト名の編集から始めましょう。ソースサーバー(プライマリーサーバー)とレプリカサーバー(2番目のサーバーまたは宛先サーバー)のDNS名を設定します。メインDNSサフィックスを追加すべきです。証明書を利用するためには完全修飾ドメイン名(FQDN)の使用が必須です。この例でのサーバーの名前は、 ハイパーv-prim.test.net – プライマリサーバー (第1サーバー)
ハイパーv-repl.test.net – レプリカサーバー (第2サーバー)
ホスト名を変更するには、システム設定を開いてください(“マイコンピュータ” または “PC” アイコンを右クリック)。次に、コンピュータ名、ドメイン、および作業グループ設定のセクションで Settings をクリックします。コンピュータ名タブで Change をクリックしてください。その後、コンピュータ名/ドメインの変更ウィンドウで、新しいコンピュータ名を入力し、 Workgroup (ドメインではない) を選択し、 More をクリックして、コンピュータのプライマリDNSサフィックスを入力します。上述のように、Hyper-Vホストの完全修飾ドメイン名にはDNSサフィックスが必要です。サフィックスは私たちの例では test.net です。ホスト名が hyper-v-prim であれば、プライマリサーバの完全修飾ドメイン名は Hyper-v-prim.test.net です。

下のスクリーンショットでは、プライマリサーバのコンピュータ名の設定をご確認いただけます。

これで両方のサーバーのホスト名が設定されましたら、サーバーで証明書を作成し始めることができます。
プライマリサーバでの証明書の作成
証明書は複数の方法で作成することが可能です。一般的に、コマンドラインインターフェースがこの目的で使用されます。最初の選択肢は MakeCert ツールを用いて自己署名証明書を作成することです。今では MakeCert ツールは廃止され、新しいソリューションを使用する予定です。
自己署名証明書を作成するには、New-SelfSignedCertificateMakeCert ツールの最新版に代わる手段として、コマンドレットを使用してください。
プライマリホスト( Hyper-v-prim.test.net )でPowerShell(管理者として)を使用して以下のコマンドを実行し、証明書を生成します:
New-SelfSignedCertificate -DnsName "Hyper-v-prim.test.net" -CertStoreLocation "cert:LocalMachineMy" -TestRoot
New-SelfSignedCertificate -DnsName "Hyper-v-repl.test.net" -CertStoreLocation "cert:LocalMachineMy" -TestRoot

その後、作成された証明書を確認し、サーバーの設定を続行します。これらのコマンドを実行した後、3 つの証明書を作成する必要があります(2 つのサーバー証明証と 1 つのルート証明証)。
MMCで作成された証明書を確認する
最初のサーバーで MMC (Microsoft Management Console) を開いてください。MMC を開くには、PowerShell で mmc を入力します。
MMC に新しいスナップインを追加して、Windows GUI (グラフィカルユーザーインターフェース) で証明書を管理します。
File > Add/Remove Snap-in… をクリックしてください。

ウィンドウの左側 (使用可能なスナップイン) から Certificates を選択し、 Add をクリックします。

ポップアップウィンドウでは、 Computer account を選択し、 Next を押してください。

Local computer が選択されたままにしておいてください(デフォルトで選択されています)、 Finish を押してください。 
証明書(ローカルコンピューター) が現在、ウィンドウの右ペイン(選択されたスナップイン)に表示されているはずです。
スナップインの追加と削除 ウィンドウで、OK を押して、(既にスナップインが選択されています)。

追加されたスナップインはMMCにセーブできます。
File > Save as をクリックしてください。
ファイル名を入力し、例えば、 Certificates1.msc としてください。
次に Certificates (Local Computer) / Personal / Certificates に進んでください。PowerShellで以前に作成した 2つの証明書が見えるはずです。 Hyper-v-prim.test.net と Hyper-v-repl.test.net です。

証明書をダブルクリックして証明書の詳細を確認します。第2サーバー用の証明書( Hyper-v-repl.test.net )は現在信頼されていません。

Certificates (Local Computer) / Intermediate Certification Authorities / Certificates に進んでください。適切な動作のために必要な CertReq Test Root 証明書を見つけてください。この証明書をダブルクリックして詳細を確認します。 CAルート証明書 は信頼されていません。

CertReq Test Root 証明書を Intermediate Certification Authorities / Certificates から Trusted Root Certification Authorities/Certificates にコピーして証明書を信頼されるようにします。証明書を選択し、 Ctrl+C でコピーし Ctrl+V でペーストしてください。

CertReq Test Root 証明書は、(以下のスクリーンショットで示されるように)Trusted Root Certification Authorities / Certificates に配置する必要があります。

Personal/Certificates にある証明書を再確認してください。まず、レプリカサーバー( Hyper-v-repl.test.net )の証明書を確認します。証明書は信頼され、Windowsの 全般 タブで確認できる有効期限があります。これで、WindowsでSSL証明書の有効期限を確認する方法もわかります。

詳細 タブ(強化キー使用法)および 証明パス タブの証明書の他のパラメータも確認してください。この証明書は正常です。

次に、レプリカサーバーの証明書と同じ方法で主要サーバーの証明書を確認してください。

主要サーバー( Hyper-v-prim.test.net )用の証明書が設定されましたので、次は第2サーバーで証明書を設定する必要があります。レプリカが保存される第2サーバー( Hyper-v-repl.test.net )に必要な証明書をコピーする必要があります。これを行うには、証明書をエクスポートします。
最初のサーバーからの証明書のエクスポート
最初のサーバーで、第2サーバー( Hyper-v-repl.test.net )に必要な証明書を選択し、Personal/Certificates に配置されています。証明書を右クリックし、コンテキストメニューでAll Tasks > Export をクリックしてください。

証明書エクスポートウィザードが開きます。
1. Welcome。ウェルカム画面で設定するものはありません。 各ステップでNextを押して続行します。
2. Export Private Key。Yes, export the private keyを選択します。
3. Export File Format。Personal Information Exchange – PKCS #12 (.PFX)を選び、Include all certificates in the certification path if possibleを選択します。

4. Security。セキュリティを維持し、秘密鍵を保護済みにするためにパスワードを入力します。
5. File to Export。エクスポートしたいファイルの名前と所在地を指定します。例えば、C:tempHyper-v-repl.pfx

6. Completing the Certificate Export Wizard。構成を確認し、Finishを押します。
次のメッセージが表示されるはずです: エクスポートは成功しました 。すべてがOKであることを意味します。
最初のサーバーからルート証明書をエクスポートしています
二つの証明書がエクスポートされました。次にルート証明書を同じ方法でエクスポートする必要があります。操作は最初のサーバーで行います ( Hyper-v-prim.test.net )。
CertReq Test Root証明書をTrusted Root Certification Authorities / Certificatesで選択します。
証明書を右クリックして、All Tasks > Exportをクリックします。

証明書エクスポートウィザードが開きます。
1. Welcome。続行するにはNextを押します。
2. Export File Format。使用したいフォーマットを選択します:
DER encoded binary X.509 (.CER)
3. File to Export. 保存するファイルの名前とパスを入力します。例えば、C:temptestRoot.cer

4. Completing the Certificate Export Wizard。構成を確認し、エクスポートを完了します。
証明書は今、最初のサーバーのHyper-v-repl.pfxにあるTestRoot.cerとC:tempファイルにエクスポートされました。

エクスポートされた証明書をセカンドサーバーにコピーしています
二つのエクスポートされた証明書ファイル (Hyper-v-repl.pfxとTestRoot.cer)を最初のサーバーからセカンドサーバーにコピーします。
ファイルをセカンドサーバーのC:tempにコピーします。
ネットワーク経由で証明書をコピーするには、Hyper-v-replC$または192.168.101.213C$のネットワークパスを使用できます(私たちのケースでは、192.168.101.213はレプリカサーバーのIPアドレスです)。ファイアウォール構成でSMBプロトコルの接続を許可する必要があります。
セカンドサーバーで証明書をインポートしています
証明書をレプリカサーバーにコピーしたら、レプリカサーバーにこれらの証明書をインポートする必要があります。
プライマリーサーバーと同じように、レプリカサーバー(セカンドサーバー)でMMCを開きます。
MMCウィンドウにスナップインを追加します。
File > Add/Remove Snap Inをクリックします。
Certificates、click Addを選択します。
Computer accountを選び、Local Computerを選択します。
OKを押します。
Windows GUIでこのスナップインを開くためのショートカットとして、Windows CMDまたはPowerShellで次のコマンドを使用できます:
certlm.msc
このコマンドはWindows証明書管理者(証明書管理コンソール)を開いてローカルコンピュータの証明書を構成します。
Certificates (Local Computer) / Personalに移動します。
空いている場所を右クリックし、コンテキストメニューでAll tasks > Importをクリックします。

証明書インポートウィザードが開きます。
1. Welcome。Local machineを選択します。
2. File to Import。 Hyper-v-repl.pfx ファイルを参照します。Browseをクリックし、すべてのファイルを表示してHyper-v-repl.pfxを選択します。
3. Private key protection。 証明書をエクスポートする際に設定したパスワードを入力してください。

4. Certificate Store。次のストアにすべての証明書を配置:
証明書ストア: Personal
5. Completing the Certificate Import Wizard。設定を確認し、Finishを押してください。

すべてが正しければ、メッセージが表示されます: インポートが成功しました 。
現在、Hyper-v-repl.test.net 証明書はレプリカサーバー (2 番目のサーバー) の Certificates (Local Computer) / Personal / Certificates にあります。この場合、CertReq Test Root 証明書もこの場所にインポートされました。

CertReq Test Root 証明書は Trusted Root Certification Authorities / Certificates に配置する必要があります。必要な場所にこの証明書をコピーします。TestRoot.cer を Hyper-v-repl.pfx と同じように手動でインポートすることができます。

証明書失効チェック
証明書失効チェックはデフォルトで必須であり、Windows Server 2012 では自己署名証明書で失効チェックをサポートしていません。このため、テスト証明書の証明書失効チェックを無効にする必要があります。両方のマシンで Windows レジストリに設定を追加します。管理者として CMD または PowerShell で次のコマンドを実行します。
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionVirtualizationReplication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
![]()
マシンを再起動する必要があるかもしれません。
ホスト名の解決
ホスト名を IP アドレスに解決するために、両方のマシンの hosts ファイル (C:Windowssystem32driversetchosts) に録音を追加します(ワークグループで作業し、マシンが Active Directory ドメインのメンバーでない場合)。この場合、両方のサーバーのホストファイルにこれらのラインを追加します:
192.168.101.209 Hyper-v-prim.test.net
192.168.101.213 Hyper-v-repl.test.net

レプリカサーバーでのレプリケーション設定の構成
VMのレプリカを保存する2番目のサーバーで以下の操作を行います。
Hyper-V マネージャーを開きます。
レプリカサーバー ( Hyper-v-repl.test.net の場合) を右クリックし、コンテキストメニューで Hyper-V Settings を押します。
Hyper-V 設定 ウィンドウの左側で、Replication Configuration を選択します。
Replication Configuration にチェックボックスを選択:
Enable this computer as a Replica serverUse certificate-based Authentication (HTTPS)
Select Certificate をクリックします。

Windows セキュリティ ポップアップウィンドウには、証明書情報が表示されます。この証明書を選択するには OK を押します。

レプリケーション構成 で Allow replication from the specified servers、オプションを選択し Add を押します。
認証エントリーの追加 ウィンドウでパラメーターを構成します。
プライマリサーバーを指定: Hyper-v-prim.test.net
レプリカファイルを保存するデフォルトの場所を指定: C:Hyper-VVirtual Hard Disks (これは例です – C: にないカスタムの場所を使用してください)
トラストグループを指定: replication

Windowsファイアウォールの構成
ファイアウォールを構成して、着信トラフィックを許可してください。レプリカサーバーでポート443で着信TCP接続を有効にしてください(テストのために一時的にファイアウォールを無効にすることも可能です)。
Enable-Netfirewallrule -displayname "Hyper-V Replica HTTPS Listener (TCP-In) "
netsh advfirewall firewall show rule name=all dir=in | find "Hyper-V "
最初のサーバーでのレプリケーションの構成
プライマリHyper-VサーバーでVMを作成し、レプリケートします。レプリケーションを有効にする前に、ソースVMにスナップショットがないことを確認してください。最初のマシンでレプリケーションを有効にし、プライマリサーバー(この例では Hyper-v-prim.test.net )にします。
VMを右クリックし、コンテキストメニューからEnable Replicationを選択します。

レプリケーションの有効化 ウィザードが開きます。
Before you Begin。Nextを選択して続行します。
Specify Replica Server。 レプリカサーバーの名前を入力します。この例ではHyper-v-repl.test.netをレプリカサーバーとしています。

Specify Connection Parameters。Use certificate-based authentication (HTTPS)を選択し、Select Certificateをクリックします。

Select Certificateをクリックすると、事前に構成された証明書に関する詳細が表示されたポップアップウィンドウが開きます。この証明書を使用するにはOKを選択します。

ソースサーバーでのレプリケーション構成を完了するために、他のレプリケーション設定を通常通りに構成します。
Choose Replication VHDs。レプリケートするVM仮想ディスクを選択します。すべてのVM仮想ディスクを選択することも、一部だけを選択することもできます。

Configure Replication Frequency。変更がレプリカサーバーに送信される頻度を選択します。例えば、5 minutesです。

Configure additional recovery points for this virtual machine. この例では、追加の時間単位の復旧時点を作成することを選択しました。ご自身のニーズにより適合するオプションを選択してください。復旧時点はインクリメンタルなレプリケーション(スナップショットベース)の結果です。

Choose Initial Replication Method。Send initial copy over the networkを選択します。

Finishを押して、Workgroup内で証明書を使用してネイティブHyper-Vレプリケーションの構成を完了し、ウィザードを閉じます。
ネイティブHyper-Vレプリケーションの代替案
仮想マシンのフェイルオーバーを実行する際の拡張機能を必要とする場合があります。ネイティブHyper-Vレプリケーションには優れた代替案があります。
NAKIVO Backup & Replicationは、Hyper-V仮想マシンをバックアップし、VMフェイルオーバーを実行できるユニバーサルデータ保護ソリューションです。この製品は、Active Directoryドメインおよび作業グループでのHyper-Vレプリケーションをサポートしています。次の機能が含まれます:
- アプリケーション認識レプリケーション。 実行中のVMをレプリケートする場合、仮想マシン内で動作するMicrosoft Volume Shadow Copy (VSS) サービスが使用されるため、VMレプリカ内のデータは一貫性を保ちます。
- MicrosoftのResilient Change Tracking (RCT) を使用した増分レプリケーションにより、ディスク容量と時間を節約できます。レプリケーションジョブを初めて実行する際にはソースVMのすべてのデータがコピーされ、その後はVMレプリカ用の適切なリカバリポイントを作成することで、変更されたデータのみがコピーされます。
- 柔軟な保持設定と GFSのデータ保持ポリシー。さまざまな期間にわたって幅広いリカバリポイントを保持し、バックアップリポジトリで使用されるストレージ容量を最適化できます。
- ネットワークアクセラレーションは、データ圧縮を使用してレプリケーション速度を向上させ、時間を節約します。
- Microsoft Exchange および SQL 向けのログ切り捨て機能により、データベースを実行している Hyper-V VM をレプリケートする際のストレージ容量を節約できます。
- 自動化されたVMフェイルオーバーにより、短時間でVMを復旧できます。
- サイト復旧 を使用すると、Hyper-V VMのレプリケーションやフェイルオーバーを含む複数のアクションからなる複雑な災害復旧シナリオを作成できます。
物理サーバーのバックアップからVMへマシンを復旧したり、Hyper-V VMのバックアップをVMware VMに復旧したりできます。災害が発生するのを待たないでください。今すぐNBRをダウンロードして、Hyper-V VMを保護しましょう!
まとめ
Hyper-V レプリケーションは、Hyper-V 仮想マシンを保護し、障害発生後も短時間でデータやワークロードを復旧できるようにするために重要です。Hyper-V サーバーが Active Directory ドメインのメンバーではなく、ワークグループに所属している場合など、ドメイン外環境で Hyper-V レプリケーションを設定する必要がある場合があります。
ワークグループ環境で Hyper-V 仮想マシンをレプリケートするには、自己署名証明書を作成し、これらの証明書を使用して Hyper-V サーバーの認証を設定する必要があります。この設定は、Hyper-V ホスト上で仮想マシンのレプリケーションを設定する前に、ホスト名、ファイアウォール、および証明書失効チェックに対して適用されます。