Hyper-V内置了从一台Hyper-V主机到另一台的虚拟机复制工具。这在故障转移的情况下非常有用。通常,Hyper-V复制是在连接到活动目录域并在集群内部的Hyper-V服务器上配置的。然而,当运行Hyper-V的服务器处于工作组时,也可以配置Hyper-V复制。为此,你需要证书。
本博文将解释如何使用Windows Server 2016内置工具创建证书,以在工作组中配置Hyper-V复制。
为什么使用证书进行Hyper-V复制
基于证书的复制允许你在不将Hyper-V主机添加到Windows域或集群的情况下复制虚拟机。对于只有三到四台服务器且不想部署集群并使用活动目录配置域的小公司来说,这一功能尤其有用。
在工作组中使用带有证书的Hyper-V复制的另一个原因是安全性。如果参与VM复制过程的Hyper-V服务器是域的成员,那么如果用户拥有活动目录管理员账户的凭据,这些Hyper-V服务器就可以完全被控制。在某些不希望出现的情况下,例如勒索软件攻击,使用AD域管理员凭据,攻击者可以销毁他们可以访问的所有资源上的所有信息。因此,在某些情况下,将用于VM复制的Hyper-V服务器留在工作组中可能更安全。
Hyper-V 支持两种身份验证类型:Kerberos 和 HTTPS 证书。Kerberos 用于活动目录域中的计算机,而 HTTPS 证书用于非域环境。当使用 HTTPS 安全连接时,将执行 SSL 证书请求。
主要步骤概述
在开始详细说明工作流程之前,让我们列出应执行的配置 Hyper-V 复制在工作组中使用证书的主要步骤。
- 在两台 Hyper-V 服务器上配置主机名。必须启用 Hyper-V 服务器角色。
- 在 Windows 防火墙中启用 HTTPS 流量和所需的入站连接。
- 在第一台服务器上创建和配置证书。导出/导入证书。
- 将证书复制到第二台服务器
- 使用证书在第二台服务器上配置复制。
- 在第一台服务器上配置复制。虚拟机不能有任何检查点。
在我们的博客文章中,我们使用两台安装了 Hyper-V 角色的 Windows Server 2016 机器。
配置服务器主机名
让我们从编辑主机名开始。为源服务器(主服务器)和副本服务器(第二台服务器或目标服务器)配置 DNS 名称。您应该添加主 DNS 后缀。使用全限定域名(FQDN)需要使用证书。在我们的示例中,服务器的名称为:
Hyper-v-prim.test.net – 主服务器(第一台服务器)
Hyper-v-repl.test.net – 复制服务器(第二台服务器)
要更改主机名,请打开系统设置(右键单击我的计算机或此 PC 图标),在计算机名称、域和工作组设置部分,单击设置。在计算机名称选项卡中,单击更改。然后在计算机名称/域更改窗口中,输入计算机名称,选择工作组(而不是域),单击更多,并输入计算机的主 DNS 后缀。如上所述,为了使 Hyper-V 主机能够使用证书进行复制,需要一个带有 DNS 后缀的完整名称。在我们的示例中,后缀为test.net。如果主机名为hyper-v-prim,则完全限定域名为Hyper-v-prim.test.net是我们的主服务器。
如下截图所示,您可以查看主服务器的计算机名称配置。
一旦您在两台服务器上配置了主机名,就可以开始在服务器上创建证书。
在主服务器上创建证书
证书可以通过多种方法创建。通常使用命令行界面进行此操作。第一个选项是使用MakeCert工具创建自签名证书。现在MakeCert工具已经被弃用,我们将使用另一种解决方案。
使用New-SelfSignedCertificate cmdlet作为MakeCert工具的现代替代品来创建自签名证书。
在主机(Hyper-v-prim.test.net)上,以管理员身份在 PowerShell 中运行以下命令以生成证书:
New-SelfSignedCertificate -DnsName “Hyper-v-prim.test.net” -CertStoreLocation “cert:\LocalMachine\My” -TestRoot
New-SelfSignedCertificate -DnsName “Hyper-v-repl.test.net” -CertStoreLocation “cert:\LocalMachine\My” -TestRoot
然后检查创建的证书,并继续配置服务器。运行这些命令后必须创建三个证书(两个服务器证书和一个根证书)。
在 MMC 中检查创建的证书
在第一台服务器上打开 MMC(Microsoft 管理控制台)。为了打开 MMC,在 PowerShell 中键入 mmc。
在 MMC 中添加一个新的控件以在 Windows 图形用户界面中管理证书。
点击 文件 > 添加/删除控件…
在打开的窗口的左侧窗格(可用控件)中选择 证书,然后点击 添加。
在弹出窗口中,选择 计算机帐户,然后点击 下一步。
保留 本地计算机 已选(默认已选),然后点击 完成。
现在应该在窗口的右侧窗格(已选控件)中显示 证书(本地计算机)。
在 添加或删除控件 窗口中,点击 确定(已选择一个控件)。
您可以将新增的插件保存在MMC中。
点击文件>另存为。
输入文件名,例如,Certificates1.msc。
转到证书(本地计算机)/个人/证书。您应该会看到我们之前在PowerShell中创建的两个证书——Hyper-v-prim.test.net和Hyper-v-repl.test.net。
双击证书以查看证书详细信息。现在第二个服务器的证书(Hyper-v-repl.test.net)不被信任。
转到证书(本地计算机)/中间证书颁发机构/证书。找到必需的CertReq Test Root证书以保证正常工作。双击此证书以查看详细信息。CA根证书不被信任。
将CertReq Test Root证书从中间证书颁发机构/证书复制到受信任的根证书颁发机构/证书以使证书受信任。选择证书,按Ctrl+C进行复制,然后按Ctrl+V进行粘贴。
CertReq Test Root证书必须位于受信任的根证书颁发机构/证书中(如下面的屏幕截图所示)。
请再次检查位于个人/证书的证书。首先,我们检查副本服务器(Hyper-v-repl.test.net)的证书。证书现在是受信任的,并且具有您可以在常规选项卡中看到的证书到期日期。现在您也知道如何在Windows中检查SSL证书到期日期。
在详细信息选项卡(增强型密钥用途)和认证路径选项卡中检查证书的其他参数。这个证书是正常的。
然后像您检查副本服务器的证书一样检查主服务器的证书。
我们已经为主服务器(Hyper-v-prim.test.net)配置了证书,现在我们需要在第二台服务器上配置证书。我们需要将所需的证书复制到第二台服务器(Hyper-v-repl.test.net),那里将存储副本。为了做到这一点,导出证书。
从第一台服务器导出证书
在第一台服务器上,选择位于个人/证书的第二台服务器(Hyper-v-repl.test.net)所需的证书。右键单击证书,在上下文菜单中单击所有任务 > 导出。
证书导出向导打开。
1. 欢迎。在欢迎屏幕上没有配置内容。在每个步骤中点击下一步以继续。
2. 导出私钥。选择是,导出私钥。
3. 导出文件格式。选择 个人信息交换 – PKCS #12 (.PFX),并选择 尽可能包含所有证书 在证书路径中。
4. 安全性。输入密码以维护安全性并保护私钥。
5. 要导出的文件。指定要导出的文件的名称和位置,例如,C:\temp\Hyper-v-repl.pfx
6. 完成证书导出向导。检查配置并点击 完成。
您应该看到消息:导出成功。这意味着一切正常。
从第一个服务器导出根证书
已导出两个证书。现在您应该以同样的方式导出根证书。在第一个服务器(Hyper-v-prim.test.net)上执行操作。
选择位于受信任的根证书颁发机构 / 证书中的 CertReq Test Root 证书。
右键点击证书;点击 所有任务 > 导出。
证书导出向导打开。
1. 欢迎。点击 下一步 继续。
2. 导出文件格式。选择您要使用的格式:
DER 编码的二进制 X.509 (.CER)
3. 导出文件。 输入文件名和路径以保存文件,例如,C:\temp\testRoot.cer
4. 完成证书导出向导。检查配置并完成导出。
证书已导出到位于第一服务器的 Hyper-v-repl.pfx 和 TestRoot.cer 文件中的 C:\temp\。
将导出的证书复制到第二服务器
从第一服务器复制两个导出的证书文件(Hyper-v-repl.pfx 和 TestRoot.cer)到第二服务器。
我们将文件复制到第二服务器的 C:\temp\。
我们可以通过网络路径 \\Hyper-v-repl\C$ 或 \\192.168.101.213\C$ 来通过网络复制证书(其中 192.168.101.213 是我们情况下副本服务器的 IP 地址)。防火墙配置必须允许 SMB 协议的连接。
在第二服务器上导入证书
将证书复制到副本服务器后,您应将这些证书导入到副本服务器。
在副本服务器(第二服务器)上打开 MMC,就像在主服务器上一样。
在 MMC 窗口中添加一个插件。
点击 文件 > 添加/删除插件。
选择 证书,点击添加。。
选择计算机账户,并选择本地计算机。
点击确定。
作为在Windows GUI中打开此控制台的快捷方式,您可以在Windows CMD或PowerShell中使用以下命令:
certlm.msc
此命令打开Windows证书管理器(证书管理控制台)以配置本地计算机证书。
转到证书(本地计算机)/ 个人。
右键单击空白处,在上下文菜单中点击所有任务 > 导入。
证书导入向导打开。
1. 欢迎。选择本地计算机。
2. 要导入的文件。浏览Hyper-v-repl.pfx文件。点击浏览,选择显示所有文件,并选择Hyper-v-repl.pfx
3. 私钥保护。输入您在导出证书时设置的密码。
4. 证书存储。将所有证书放置在以下存储中:
证书存储:个人
5. 完成证书导入向导。检查配置,并点击完成。
如果一切正确,您应该会看到消息:导入成功。
现在 Hyper-v-repl.test.net 证书位于副本服务器(第二台服务器)上的 证书(本地计算机)/ 个人 / 证书 中。 在我们的情况下,CertReq Test Root 证书也已导入到此位置。
必须将 CertReq Test Root 证书放置在 受信任的根证书颁发机构 / 证书。 将此证书复制到所需位置。 您可以像导入 Hyper-v-repl.pfx 一样手动导入 TestRoot.cer
证书吊销检查
请注意,默认情况下,证书吊销检查是强制性的,而自签名证书在 Windows Server 2012 上不支持吊销检查。 因此,您必须为测试证书禁用证书吊销检查。 在两台计算机上的 Windows 注册表中添加设置。 以管理员身份在 CMD 或 PowerShell 中运行以下命令。
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication” /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
您可能需要重新启动计算机。
解析主机名
在两台计算机的 hosts 文件(C:\Windows\system32\drivers\etc\hosts)中添加记录,以在工作组中解析主机名到 IP 地址(当计算机不是 Active Directory 域的成员时)。 在我们的情况下,我们在两台服务器的主机文件中添加以下行:
192.168.101.209 Hyper-v-prim.test.net
192.168.101.213 Hyper-v-repl.test.net
在复制服务器上配置复制设置
执行以下操作,这些操作应在应存储虚拟机副本的第二台服务器上执行。
打开 Hyper-V 管理器。
右键单击复制服务器(在我们的情况下为 Hyper-v-repl.test.net),在上下文菜单中,点击 Hyper-V 设置。
在 Hyper-V 设置 窗口的左窗格中,选择 复制配置。
在 复制配置 中选中以下复选框:
- 将此计算机启用为复制服务器
- 使用基于证书的身份验证(HTTPS)
点击 选择证书。
弹出的 Windows 安全 窗口显示有关您证书的信息。点击确定以选择此证书。
在 复制配置 中,选择 允许来自指定服务器的复制 选项,然后点击 添加。
在 添加授权项 窗口中配置参数。
指定主服务器:Hyper-v-prim.test.net
指定副本文件的默认存储位置:C:\Hyper-V\Virtual 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 服务器上创建一个虚拟机进行复制。在启用复制之前确保源虚拟机没有任何快照。在第一台机器上启用复制,即主服务器(在我们的情况下是 Hyper-v-prim.test.net)。
右键单击一个虚拟机,在上下文菜单中选择 启用复制。
启用复制向导打开。
在开始之前。点击 下一步 继续。
指定副本服务器。输入您的副本服务器的名称。在我们的情况下,我们使用 Hyper-v-repl.test.net 作为副本服务器。
指定连接参数。选择 使用基于证书的身份验证(HTTPS),然后点击 选择证书。
点击 选择证书 后,会弹出一个窗口显示您之前配置的证书的详细信息。点击 确定 以使用此证书。
在源服务器上配置其他复制设置以完成复制配置。
选择复制VHD。选择必须复制的VM虚拟磁盘。您可以选择所有VM虚拟磁盘或只选择其中一些。
配置复制频率。选择发送更改到副本服务器的频率,例如,5分钟。
为此虚拟机配置额外的恢复点。在我们的示例中,我们选择创建额外的每小时恢复点。选择最适合您需求的选项。恢复点是增量复制(基于快照的)的结果。
选择初始复制方法。选择通过网络发送初始副本。
点击完成以完成使用工作组中的证书配置本机Hyper-V复制的配置,并关闭向导。
本机Hyper-V复制的替代方案
执行复制的内置Hyper-V功能非常有用。但有时您可能需要扩展功能来执行Hyper-V复制和虚拟机故障转移。本机Hyper-V复制有一个很好的替代方案。
NAKIVO备份与复制是一个通用的数据保护解决方案,可以备份Hyper-V虚拟机并执行VM故障转移。该产品支持在Active Directory域和工作组中进行Hyper-V复制。以下功能已包括在内:
- 应用感知复制。当你复制正在运行的虚拟机时,虚拟机副本中的数据是一致的,因为使用了运行在虚拟机内部的Microsoft Volume Shadow Copy(VSS)服务。
- 使用微软的弹性变更跟踪(RCT)进行增量复制可以节省磁盘空间和时间。首次运行复制作业会复制源虚拟机的所有数据,然后只有更改的数据会通过为虚拟机副本创建适当的恢复点来进行复制。
- 灵活的保留设置和GFS保留策略。为不同时间段保留广泛的恢复点,并优化备份存储库中使用的存储空间。
- 网络加速通过使用数据压缩来提高复制速度,节省时间。
- Microsoft Exchange和SQL的日志截断可节省Hyper-V虚拟机在复制时运行数据库的存储空间。
- 自动化的虚拟机故障转移允许您在短时间内恢复虚拟机。
- 站点恢复允许您创建包含多个操作的复杂灾难恢复方案,包括Hyper-V虚拟机复制和故障转移。
您可以从物理服务器备份中恢复机器到虚拟机,或者将Hyper-V虚拟机备份恢复到VMware虚拟机。不要等待灾难发生 – 立即下载NAKIVO备份与复制,保护您的Hyper-V虚拟机!
结论
Hyper-V 复制对于保护 Hyper-V 虚拟机并确保在任何故障后能够快速恢复数据和工作负载非常重要。有时,您可能需要在非域环境中配置 Hyper-V 复制,即当 Hyper-V 服务器不是 Active Directory 域的成员,并且属于工作组时。
您需要创建自签名证书来在工作组中复制 Hyper-V VM,并使用这些证书为 Hyper-V 服务器配置身份验证。在配置 Hyper-V 主机上的 VM 复制之前,配置适用于主机名、防火墙和证书吊销检查。
Source:
https://www.nakivo.com/blog/how-to-request-ssl-certificates-for-hyper-v/