为 HGS 获取证书

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

部署 HGS 时,系统会要求你提供签名和加密证书,这些证书用于保护启动受防护的 VM 所需的敏感信息。 这些证书是 HGS 必需的,并且仅在运行受防护的 VM 的主机已证明其运行正常时,才用于解密这些 VM 的密钥。 租户(VM 所有者)使用一半公用证书来授权数据中心运行其受防护的 VM。 本部分介绍为 HGS 获取兼容的签名和加密证书所需的步骤。

从证书颁发机构请求证书

虽然这不是必需的步骤,但强烈建议从受信任的证书颁发机构获取证书。 这样做有助于 VM 所有者验证他们是否将授权正确的 HGS 服务器(即服务提供程序或数据中心)来运行其受防护的 VM。 在企业方案中,可以选择使用自己的企业 CA 来颁发这些证书, 而托管商和服务提供商应考虑改用已知的公共 CA。

颁发的签名和加密证书必须具有以下证书属性(除非属性已标记为“建议”):

证书模板属性 所需的值
加密提供程序 任何密钥存储提供程序 (KSP)。 不支持旧式加密服务提供程序 (CSP)
密钥算法 RSA
最小密钥大小 2048 位
签名算法 建议:SHA256
密钥用法 数字签名和数据加密
增强型密钥用法 服务器身份验证
密钥续订策略 使用相同密钥续订。 使用不同的密钥续订 HGS 证书将使受防护的 VM 无法启动。
使用者名称 建议:公司的名称或 Web 地址。 此信息将在防护数据文件向导中向 VM 所有者显示。

无论使用的是硬件还是软件支持的证书,这些要求都适用。 出于安全原因,建议在硬件安全模块中创建 HGS 密钥 (HSM),以防止私钥复制到系统外部。 按照 HSM 供应商提供的指南请求具有上述属性的证书,并确保在每个 HGS 节点上安装并授权 HSM KSP。

每个 HGS 节点都需要访问相同的签名和加密证书。 如果使用软件支持的证书,则可以使用密码将证书导出到 PFX 文件,并允许 HGS 为你管理证书。 此外,还可以选择将证书安装到每个 HGS 节点上的本地计算机的证书存储中,并将指纹提供给 HGS。 初始化 HGS 群集主题中介绍了这两种方式。

为测试方案创建自签名证书

如果要创建 HGS 实验室环境,并且没有或不想使用证书颁发机构,则可以创建自签名证书。 在防护数据文件向导中导入此证书信息时,会收到警告,但所有功能不会受影响。

若要创建自签名证书并将其导出到 PFX 文件,请在 PowerShell 中运行以下命令:

$certificatePassword = Read-Host -AsSecureString -Prompt 'Enter a password for the PFX file'

$signCert = New-SelfSignedCertificate -Subject 'CN=HGS Signing Certificate' -KeyUsage DataEncipherment, DigitalSignature
Export-PfxCertificate -FilePath '.\signCert.pfx' -Password $certificatePassword -Cert $signCert

# Remove the certificate from "Personal" container
Remove-Item $signCert.PSPath
# Remove the certificate from "Intermediate certification authorities" container
Remove-Item -Path "Cert:\LocalMachine\CA\$($signCert.Thumbprint)"

$encCert = New-SelfSignedCertificate -Subject 'CN=HGS Encryption Certificate' -KeyUsage DataEncipherment, DigitalSignature
Export-PfxCertificate -FilePath '.\encCert.pfx' -Password $certificatePassword -Cert $encCert

# Remove the certificate from "Personal" container
Remove-Item $encCert.PSPath
# Remove the certificate from "Intermediate certification authorities" container
Remove-Item -Path "Cert:\LocalMachine\CA\$($encCert.Thumbprint)"

请求 SSL 证书

在消息级别加密 Hyper-V 主机和 HGS 之间传输的所有密钥和敏感信息,即使用 HGS 或 Hyper-V 已知的密钥对这些信息进行加密,从而防止他人窥探你的网络流量并窃取 VM 的密钥。 但是,如果有合规性要求或想要加密 Hyper-V 和 HGS 之间的所有通信,则可使用 SSL 证书来配置 HGS,该证书可在传输级别加密所有数据。

Hyper-V 主机和 HGS 节点都需要信任你提供的 SSL 证书,因此建议从企业证书颁发机构请求 SSL 证书。 请求证书时,请务必指定以下内容:

SSL 证书属性 所需的值
使用者名称 HGS 客户端(即受保护的主机)将用于访问 HGS 服务器的地址, 通常是 HGS 群集的 DNS 地址,称为分布式网络名称或虚拟计算机对象 (VCO), 它是提供给 Initialize-HgsServer 的 HGS 服务名称和 HGS 域名的串联。
使用者可选名称 如果要使用其他 DNS 名称来访问 HGS 群集(例如,如果 HGS 群集位于负载均衡器后面,或者对复杂拓扑中的节点子集使用其他地址),请确保将这些 DNS 名称包含在证书请求的 SAN 字段中。 请注意,如果填充了“SAN 扩展”,则会忽略“使用者名称”,因此 SAN 应包含所有值,包括通常输入在“使用者名称”中的值。

配置第一个 HGS 节点中介绍了在初始化 HGS 服务器时指定此证书的方式。 此外,也可以稍后使用 Set-HgsServer cmdlet 添加或更改 SSL 证书。

后续步骤