管理 HPC Pack 2019 群集的证书
HPC Pack 群集中有多个证书用于不同的目的。 下面是完整列表:
证书 | 用途和说明 | 安装位置 |
---|---|---|
Microsoft HPC Azure 客户端 | 头节点用于与 Azure PaaS 代理节点通信。 它是 HPC 群集自动生成的自签名证书。 | 头节点:LocalComputer\Personal |
Microsoft HPC Azure 服务 | Azure PaaS 代理节点用于与头节点通信。 它是 HPC 群集自动生成的自签名证书。 | Azure 代理节点:LocalComputer\Personal |
Microsoft HPC Azure 管理(1) | 头节点用于与 Azure 管理服务通信,以在经典模式下管理 Azure 资源。 |
头节点: LocalComputer\Personal LocalComputer\Trusted Root CA (仅自签名) Azure 门户: 订阅\管理证书 |
Azure 服务主体证书 | 头节点用于与 Azure 资源管理器通信,以在资源管理器模式下管理 Azure 资源。 可以将同一证书与 Microsoft HPC Azure 管理配合使用。 |
头节点: LocalComputer\Personal Azure 服务主体 |
HPC Pack 通信证书 | 用于除 Azure PaaS 节点和 Azure Batch 池以外的所有节点的通信。 如果它是自签名证书,并且你计划使用 突发到 Azure IaaS VM 功能来部署 Azure IaaS 计算节点,则还应 将此证书导入 Azure Key Vault,以便可以使用 Azure IaaS 计算节点与头节点通信。 |
Windows 节点(2)(3): LocalComputer\Personal LocalComputer\Trusted Root CA(仅自签名) Linux 节点: /opt/hpcnodemanager/cert |
Service Fabric 证书 | 头节点用于保护 Service Fabric 群集通信。 默认情况下,它使用的证书与 HPC Pack 通信证书相同。 可以将其他证书添加到 Service Fabric 群集。 |
头节点: LocalComputer\Personal LocalComputer\Trusted Root CA(仅自签名) CurrentUser\Personal**(5)** |
(1) 云服务(经典版)现已弃用新客户,所有客户将于 2024 年 8 月 31 日停用。 新部署应使用基于 Azure 资源管理器的新部署模型 Azure 云服务(扩展支持)。
(2) 对于已加入域的 Windows HPC 客户端计算机,可以选择不通过以下两种方式在 本地计算机\受信任的根 CA 存储中安装头节点的证书 HPC Pack 通信:
在 HPC 客户端安装过程中,选择“跳过 CA 和 CN 验证”
在注册表项 HKLM\SOFTWARE\Microsoft\HPC 下添加名为 certificateValidationType 的注册表值,其中 DWORD 值为 0
(3) 对于未加入域的 HPC 客户端计算机, 必须使用私钥在
(4) 如果要在头节点或其他节点上访问 Service Fabric 群集门户(https://<service-fabric-cluster-hostname>:10400
),则应使用私钥在 CurrentUser\Personal 下安装证书。
轮换 HPC Pack 节点通信证书
Microsoft HPC Pack 2016(及更高版本)使用证书来保护 HPC 节点之间的通信。 需要在证书过期之前轮换证书,以避免中断 HPC Pack 群集。
证书必须满足以下要求:
- 具有能够进行密钥交换的私钥。
- 密钥用法包括数字签名、密钥加密、密钥协议和证书签名。
- 增强型密钥用法包括客户端身份验证和服务器身份验证。
- 如果使用两个不同的证书,则它们必须具有相同的使用者名称。
如果证书还用于保护 Service Fabric 群集 ,则必须满足以下 的其他要求:
- 证书的提供程序必须 Microsoft 增强的 RSA 和 AES 加密提供程序;
- RSA 密钥长度必须 2048 位。
准备新证书
准备新证书时,请确保使用与旧证书相同的使用者名称。 在 HPC 节点上运行以下 PowerShell 命令以获取证书的使用者名称。
$thumbprint = (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\HPC -Name SSLThumbprint).SSLThumbPrint
$subjectName = (Get-Item Cert:\LocalMachine\My\$thumbprint).Subject
$subjectName
如果使用自签名证书,请在具有操作系统 Windows 10 或 Windows Server 2016 的计算机上运行以下 PowerShell 命令,以生成满足上述所有要求的新证书。 在名为新证书指纹的文件夹下获取两个文件:使用私钥 PrivateCert.pfx,并且没有私钥 PublicCert.cer。 使用正确的 <使用者名称>。
$subjectName = "<subject-name>"
$pfxcert = New-SelfSignedCertificate -Subject $subjectName -KeySpec KeyExchange -KeyLength 2048 -HashAlgorithm SHA256 -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -CertStoreLocation Cert:\CurrentUser\My -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(10) -NotBefore (Get-Date).AddDays(-1)
$certThumbprint = $pfxcert.Thumbprint
$null = New-Item $env:Temp\$certThumbprint -ItemType Directory
$pfxPassword = Get-Credential -UserName 'Protection password' -Message 'Enter protection password below'
Export-PfxCertificate -Cert Cert:\CurrentUser\My\$certThumbprint -FilePath "$env:Temp\$certThumbprint\PrivateCert.pfx" -Password $pfxPassword.Password
Export-Certificate -Cert Cert:\CurrentUser\My\$certThumbprint -FilePath "$env:Temp\$certThumbprint\PublicCert.cer" -Type CERT -Force
start "$env:Temp\$certThumbprint"
如果使用证书颁发机构(CA)签名证书或现有的自签名证书,可以运行以下命令并检查 KeySpec
、Subject
、Key Usage
、Enhanced Key Usage
、Public Key Length
和 Provider
的值。
CertUtil.exe -p "<password>" -v -dump <path-of-pfxFile>
如果
Subject
、Key Usage
、Enhanced Key Usage
或Public Key Length
的值不匹配,则必须重新生成证书。如果
KeySpec
的值(应为“1 -- AT_KEYEXCHANGE”)或Provider
不匹配,则无需重新生成证书。 运行以下命令,使用修改后的KeySpec
和Provider
值导入证书,然后运行 certlm.msc 将证书(包括私钥)导出到满足要求的新 PFX 文件。
CertUtil.exe -f -p "<password>" -csp "Microsoft Enhanced RSA and AES Cryptographic Provider" -importpfx "<path-of-pfxFile>" AT_KEYEXCHANGE
轮换单头节点的证书
如果新的头节点证书是自签名的,则让所有 Windows 群集节点在轮换之前都信任此新的自签名证书。
- 将新的公共证书 PublicCert.cer 文件复制到 HPC 安装共享(\\headnode\REMINST\Certificates)下 证书 文件夹中,新名称 HpcHnPublicCert.cer。
- 打开 HPC 群集管理器>资源管理>节点。 选择所有 Windows 计算、代理和工作站节点。 选择 运行命令。 使用正确的头节点运行以下命令,使其信任新的头节点证书:
PowerShell.exe -ExecutionPolicy ByPass -Command "Import-certificate -FilePath \\<headnode>\REMINST\Certificates\HpcHnPublicCert.cer -CertStoreLocation cert:\LocalMachine\Root"
下载 PowerShell 脚本 Update-HpcNodeCertificate.ps1 并运行以下 PowerShell 命令,PrivateCert.pfx应用新证书:
.\Update-HpcNodeCertificate.ps1 -PfxFilePath <path-of-PrivateCert.pfx> -Password <password>
如果使用“突发到 Azure IaaS VM”功能,请在 HPC 群集管理器上选择“配置”>“设置 Azure 部署配置”,以导入 Azure Key Vault 证书 页上的新证书 PrivateCert.pfx。 或者,可以参考 在 Azure 门户上创建 Azure Key Vault 证书 手动将 PrivateCert.pfx 导入 Azure Key Vault,然后在“设置 Azure 部署配置 向导”中的“Azure Key Vault 证书”页上指定值。
轮换高可用性头节点的证书
此过程适用于 Service Fabric 群集或 HPC Pack 2019 内置高可用性体系结构。
如果新的头节点证书是自签名的,则让所有 Windows 群集节点在轮换之前都信任此新的自签名证书。
将新的公共证书 PublicCert.cer 文件复制到 HPC 安装共享(\\<InstallShare>\Certificates) 下 证书 文件夹中,并 HpcHnPublicCert.cer新名称。 可以使用以下 PowerShell 命令获取 HPC 安装共享。
Add-PSSnapin Microsoft.HPC Get-HpcClusterRegistry -PropertyName InstallShare
打开 HPC 群集管理器>资源管理>节点,选择包括所有头节点在内的所有 Windows 群集节点,然后选择 运行命令。 使用正确的安装共享运行以下命令行,使其信任新的头节点证书:
PowerShell.exe -ExecutionPolicy ByPass -Command "Import-certificate -FilePath \\<InstallShare>\Certificates\HpcHnPublicCert.cer -CertStoreLocation cert:\LocalMachine\Root"
在每个头节点上,下载 PowerShell 脚本 Update-HpcNodeCertificate.ps1 并运行以下 PowerShell 命令导入并应用新证书 PrivateCert.pfx:
.\Update-HpcNodeCertificate.ps1 -PfxFilePath <path-of-PrivateCert.pfx> -Password <password>
在任何一个头节点上,运行以下 PowerShell 命令以应用所有头节点中已安装的新证书。
Add-PSSnapin Microsoft.HPC $thumbprint = (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\HPC -Name SSLThumbprint).SSLThumbPrint Set-HpcClusterRegistry -PropertyName SSLThumbprint -PropertyValue $thumbprint
如果使用“突发到 Azure IaaS VM”功能,请在 HPC 群集管理器上选择“配置”>“设置 Azure 部署配置” 以导入 Azure Key Vault 证书页上的新证书 PrivateCert.pfx。 或者,可以参考 在 Azure 门户中创建 Azure Key Vault 证书 手动将 PrivateCert.pfx 导入 Azure Key Vault,然后在“设置 Azure 部署配置 向导”中指定 Azure Key Vault 证书页上的值。
[仅限 Service Fabric 群集]如果使用同一证书来保护 Service Fabric 群集,请检查是否需要 Service Fabric 群集配置升级。 在任何头节点上,运行以下 PowerShell 命令来检查 Service Fabric 群集的当前安全配置。
Connect-ServiceFabricCluster Get-ServiceFabricClusterConfiguration | Out-File d:\sfclusterconfig.json
如果安全配置如下所示,则如果新证书由同一颁发者颁发,则不需要 Service Fabric 群集配置升级。
"Security": { "CertificateInformation": { "ClusterCertificateCommonNames": { "CommonNames": [ { "CertificateCommonName": "[CertificateCommonName]", "CertificateIssuerThumbprint": "[IssuerThumbprint]" } ], "X509StoreName": "My" }, "ServerCertificateCommonNames": { "CommonNames": [ { "CertificateCommonName": "[CertificateCommonName]", "CertificateIssuerThumbprint": "[IssuerThumbprint]" } ], "X509StoreName": "My" } }, "ClusterCredentialType": "X509", "ServerCredentialType": "X509" },
如果安全配置如下所示,则需要升级 Service Fabric 群集配置。
"Security": { "CertificateInformation": { "ClusterCertificate": { "Thumbprint": "[Thumbprint]", "X509StoreName": "My" }, "ServerCertificate": { "Thumbprint": "[Thumbprint]", "X509StoreName": "My" } }, "ClusterCredentialType": "X509", "ServerCredentialType": "X509" },
有关 Service Fabric 群集的证书滚动更新的详细信息,请参阅 升级 Service Fabric 群集证书配置,保护独立的 Service Fabric 群集。
升级 Service Fabric 群集的证书配置
按如下所示修改文件 sfclusterconfig.json:
- 替换
ClusterCertificate
和ServerCertificate
下Thumbprint
的值 - 删除名称
$id
的属性(如果有)Security
和CertificateInformation
- 将
clusterConfigurationVersion
更改为更高版本,例如,从 1.0.0 更改为 1.0.1
- 替换
运行以下 PowerShell 命令以启动 Service Fabric 群集配置升级。
Connect-ServiceFabricCluster Start-ServiceFabricClusterConfigurationUpgrade -ClusterConfigPath d:\sfclusterconfig.json
使用以下命令查询升级状态:
Get-ServiceFabricClusterConfigurationUpgradeStatus
使用 Service Fabric HA 轮换群集中已过期的证书
- 恢复 Service Fabric 群集
- 按照分步联机文档 排查证书过期的 Azure Service Fabric 独立群集 以续订 Service Fabric 群集的证书。
- 恢复 HPC Pack 群集
- 2.1 在每个头节点上,运行以下 PowerShell 命令:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\HPC" -Name SSLThumbprint -Value <NewThumbrpint>
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\HPC" -Name SSLThumbprint -Value <NewThumbrpint>
- 2.2 在一个头节点上运行 PowerShell 脚本 Set-HpcReliableProperty.ps1(可以是任一头节点):
Set-HpcReliableProperty.ps1 -PropertyName SSLThumbprint -PropertyValue <NewThumbrpint>
在代理、计算和工作站节点上轮换证书
将新的 CN 证书(例如 PrivateCert.pfx)复制到 HPC 安装共享下的 Certificates 文件夹中,例如,\\headnode\REMINST\Certificates,新名称 HpcCnCommunication.pfx。
下载 PowerShell 脚本 Update-HpcNodeCertificate.ps1 并将其放入 HPC 安装共享(\\<头节点>\REMINST)。 打开 HPC 群集管理器,选择 资源管理>节点。 选择所有 Windows 计算、代理和工作站节点。 确保不包括头节点。 选择 运行命令,并使用正确的头节点和密码值运行以下命令:
PowerShell.exe -ExecutionPolicy ByPass -Command "\\<headnode>\REMINST\Update-HpcNodeCertificate.ps1 -PfxFilePath \\<headnode>\REMINST\Certificates\HpcCnCommunication.pfx -Password <password> -RunAsScheduledTask"
如果有 Linux 计算节点,请在头节点上打开 HPC 群集管理器。 选择 资源管理>节点。 选择所有 Linux 节点。 选择 运行命令,并按顺序运行以下命令:
首先,在所有 Linux 节点上创建临时目录。
mkdir /tmp/hpcreminst
其次,在所有 Linux 节点上装载 HPC 安装共享。 填写头节点、域名和域用户凭据的正确值。
mount -t cifs //headnode/REMINST /tmp/hpcreminst -o vers=2.1, domain=<domainname>,username=<username>,password='<userpassword>',dir_mode=0755,file_mode=0755
第三,计划作业以在所有 Linux 节点上轮换证书。 填写头节点和证书保护密码的正确值。
cd /tmp/hpcreminst; echo "python /opt/hpcnodemanager/setup.py -certfile:/tmp/hpcreminst/Certificates/HpcCnCommunication.pfx -certpassword:<password>" | at now + 1 minute
(可选)如果部署新的裸机计算机,请打开 HPC 群集管理器,转到 部署待办事项列表。 选择 导入部署证书 以从 \\headnode\REMINST\Certificates导入新 CN 证书,名称 为 hpcCnCommunication.pfx。
后续步骤
请考虑以下教程,详细了解 HPC Pack 2019。