在 vSphere 8.0 及更高版本中,您可以将 Auto Deploy 服务器设置为使用第三方证书颁发机构 (CA) 或您自己的内部 CA 签名的自定义证书置备 ESXi 主机。默认情况下,Auto Deploy 服务器使用 VMware Certificate Authority (VMCA) 签名的证书置备 ESXi 主机。

在 vSphere 8.0 之前,使用 Auto Deploy 管理证书的选项包括:

  • 使用 vCenter Server 和内置 VMware Certificate Authority(默认)。
  • 将 Auto Deploy 设为第三方 CA 的辅助 CA。在这种情况下,Auto Deploy SSL 密钥会对证书进行签名。

在 vSphere 8.0 及更高版本中,您可以将第三方 CA 或您自己的内部 CA 签名的自定义证书上载到 Auto Deploy。Auto Deploy 将自定义证书与 ESXi 主机的 MAC 地址或 BIOS UUID 相关联。每次 Auto Deploy 主机启动时,Auto Deploy 都会检查自定义证书。如果 Auto Deploy 找到自定义证书,它将使用该证书,而不是通过 VMCA 生成一个证书。

此任务的主要步骤包括:

  1. 为第三方 CA 或您自己的内部 CA 生成自定义证书请求。
  2. 获取签名的自定义证书(密钥和证书)并将其存储在本地。
  3. 如果使用的是第三方 CA,并且之前未曾使用,请确保将 CA 的根证书上载到 vCenter Server 上的 TRUSTED_ROOTS 存储。
  4. 将自定义证书上载到 Auto Deploy 并将证书与 ESXi 主机的 MAC 地址或 BIOS UUID 相关联。
  5. 引导 ESXi 主机。

将自定义证书分配给 ESXi 主机时,Auto Deploy 会在下次从 Auto Deploy 引导时将该证书推送到主机。

使用自定义证书和 Auto Deploy 时,请注意以下注意事项。

  • 您必须使用 PowerCLI Add-CustomCertificateRemove-CustomCertificateList-CustomCertificate cmdlet 来管理与 Auto Deploy 一起使用的自定义证书。管理自定义证书的功能在 vSphere Client 中不可用。
  • 要刷新用于 Auto Deploy 的自定义证书,必须再次运行 Add-CustomCertificate cmdlet。
  • 请务必检查自定义证书是否存在潜在错误。Auto Deploy 仅验证自定义证书是否符合 X.509 证书标准,以及证书的过期阈值是否设置为至少 240 天。Auto Deploy 不会执行任何其他证书验证或检查。要更改证书阈值,可以运行 Set-DeployOption -Key certificate-refresh-threshold cmdlet。
  • 如果稍后使用 Remove-CustomCertificate cmdlet 从 ESXi 主机中移除自定义证书,必须重新启动该主机才能使更改生效。

有关自定义证书和 Auto Deploy 的详细信息,请参见 《VMware ESXi 安装和设置》 文档。

前提条件

确保您具有以下内容:
  • 从证书颁发机构请求证书。证书必须满足以下要求。
    • 密钥大小:2048 位(最小长度)到 8192 位(最大长度)(PEM 编码)
    • PEM 格式。VMware 支持 PKCS8 和 PKCS1(RSA 密钥)。密钥添加到 VECS 后,会转换为 PKCS8。
    • x509 版本 3
    • CRT 格式
    • CA 扩展设置为 true
    • 证书签名的密钥用法
    • 比当前时间早一天的开始时间
    注: vSphere 的 FIPS 证书仅验证 2048 和 3072 的 RSA 密钥大小。请参见 使用 FIPS 时的注意事项
  • ESXi 主机 MAC 地址或 BIOS UUID。评估哪种方法最适合您的环境。BIOS UUID 比 MAC 地址更稳定,更不受更改的影响。如果更改 ESXi 主机中的网络适配器,MAC 地址将发生变化。但是,MAC 地址可能更易于使用,并且比 BIOS UUID 更易于获取。
  • 至少为 PowerCLI 版本 12.6.0。有关 Auto Deploy PowerCLI cmdlet 的详细信息,请参见 《VMware ESXi 安装和设置》 文档中的 Auto Deploy PowerCLI Cmdlet 概览主题。

确保您具有以下特权:

  • 添加自定义证书:Autodeploy.规则.创建
  • 获取自定义证书信息:系统.读取

过程

  1. 生成证书请求。
    1. 使用之前列出的证书请求要求,创建配置 (.cfg) 文件。
    2. 要生成 CSR 文件和密钥文件,请运行 openssl req 命令文件,同时传入配置 (.cfg) 文件。
      例如:
      openssl req -new -config custom_cert.cfg -days 4200 -sha256 -keyout rui.key -out rui.csr

      在该命令中:

      • -new 生成新的证书请求。
      • -config custom_cert.cfg 指定自定义 .cfg 文件。
      • -days 4200 指定证书认证时间为 4200 天。
      • -sha256 指定签署请求所需的消息摘要。
      • -keyout rui.key 指定要将新创建的私钥写入到的文件。
      • -out rui.csr 指定要写入到的输出文件。
  2. 将证书请求发送给第三方 CA,或者,如果您给自己的证书签名,请运行 openssl x509 -req 命令,从 rui.csr 文件生成自定义证书。
    例如:
    openssl x509 -req -in rui.csr -CA "/etc/vmware-rbd/ssl/rbd-ca.crt" -CAkey \
    "/etc/vmware-rbd/ssl/rbd-ca.key" -extfile \
    openssl.cfg -extensions x509 -CAserial "/etc/vmware-rbd/ssl/rbd-ca.srl" -days \
    4200 -sha256 -out signed_rui.crt
    

    在该命令中:

    • -in rui.csr 指定输入文件。
    • -CA "/etc/vmware-rbd/ssl/rbd-ca.crt" 指定用于服务器证书验证的目录。
    • -CAkey "/etc/vmware-rbd/ssl/rbd-ca.key" 设置用于签署证书的 CA 私钥。
    • -extfile openssl.cfg 指定要从中读取证书扩展名的其他可选配置文件。
    • -extensions x509 指定使用 x509 证书扩展。
    • -CAserial "/etc/vmware-rbd/ssl/rbd-ca.srl" 使用 rbd-ca.srl 中的序列号对证书进行签名。
    • -days 4200 指定证书认证时间为 4200 天。
    • -sha256 指定签署请求所需的消息摘要。
    • -out signed_rui.crt 指定要写入到的输出文件。
  3. (可选) 如果之前未将签名证书颁发机构的证书上载到 VMware 端点证书存储 (VECS) 内的 TRUSTED_ROOTS 存储,请在运行 Auto Deploy 服务的 vCenter Server 上执行以下步骤。
    1. 使用 WinSCP 等工具将证书复制到 vCenter Server
    2. 使用 SSH 登录到 vCenter Server 并运行以下命令。
      /usr/lib/vmware-vmafd/bin/dir-cli trustedcert publish --cert path_to_ca_certificate
  4. 获取 ESXi 主机 MAC 地址或 BIOS UUID。
  5. 执行以下步骤将自定义证书添加到 Auto Deploy。
    1. 要连接到 vCenter Server,请运行 Connect-VIServer cmdlet。
      Connect-VIServer -server VC_ip_address -User administrator_user -Password 'password'
    2. (可选) 要查看现有的自定义证书,请运行 Get-CustomCertificates cmdlet。
      首次添加自定义证书时,将看不到此 cmdlet 返回的任何证书。
    3. 要将自定义证书与 ESXi 主机关联,请运行 Add-CustomCertificate cmdlet。
      Add-CustomCertificate -HostID [MAC_Address | BIOS_UUID] -Certificate "path_to_custom_cert" -Key "path_to_custom_cert_key"
      您可以指定主机的 MAC 地址或 BIOS UUID。Auto Deploy 将自定义证书上载到主机。
    4. 要验证证书是否已上载,请运行 Get-CustomCertificates cmdlet。
      您会看到类似以下内容的输出:
      Name:     CustomHostCert-1
      CertificateId:      1
      HostId:             02:08:b0:8e:18:a2
      ExpirationTime: 1   2/28/2033 10:45:50 AM
      TimeCreated:        9/29/2022 7:40:28 AM
      LastModified:       9/29/2022 7:40:28 AM
      AssociatedHostName: 
      AssociatedHostName 目前为空。启动主机后,输出将反映与自定义证书关联的 ESXi 主机的名称。
  6. 启动 ESXi 主机。
  7. 要验证自定义证书是否与 vCenter Server 相关联,请再次运行 Get-CustomCertificates cmdlet。
    您会看到输出包含以下内容。
    Name:     CustomHostCert-1
    CertificateId:      1
    HostId:             02:08:b0:8e:18:a2
    ExpirationTime: 1   2/28/2033 10:45:50 AM
    TimeCreated:        9/29/2022 7:40:28 AM
    LastModified:       9/29/2022 7:40:28 AM
    AssociatedHostName: host1.example.com
    现在, AssociatedHostName 包含 ESXi 主机的名称。