要使密钥提供程序服务能够连接到密钥提供程序,必须创建可信密钥提供程序,然后在 vSphere Trust Authority 集群和密钥服务器 (KMS) 之间配置信任设置。对于大多数符合 KMIP 的密钥服务器,此配置需要设置客户端和服务器证书。

以前,在 vSphere 6.7 中称为 KMS 集群,现在在 vSphere 7.0 及更高版本中称为密钥提供程序。有关密钥提供程序的详细信息,请参见什么是 vSphere Trust Authority 密钥提供程序服务

在生产环境中,您可以创建多个密钥提供程序。通过创建多个密钥提供程序,可以解决如何根据公司组织、不同的业务单位或客户等管理部署的问题。

如果按顺序执行这些任务,您仍会连接到 vSphere Trust Authority 集群的 vCenter Server

前提条件

过程

  1. 确保您已连接到 Trust Authority 集群的 vCenter Server。例如,可以输入 $global:defaultviservers,显示所有连接的服务器。
  2. (可选) 如有必要,可以运行以下命令确保您已连接到 Trust Authority 集群的 vCenter Server
    Disconnect-VIServer -server * -Confirm:$false
    Connect-VIServer -server TrustAuthorityCluster_VC_ip_address -User trust_admin_user -Password 'password'
  3. 要创建可信密钥提供程序,请运行 New-TrustAuthorityKeyProvider cmdlet。
    例如,此命令使用 1 作为 PrimaryKeyID,并使用名称 clkp。如果按顺序执行这些任务,则之前已将 Get-TrustAuthorityCluster 信息分配给了变量(例如, $vTA = Get-TrustAuthorityCluster 'vTA Cluster')。
    New-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA -PrimaryKeyId 1 -Name clkp -KmipServerAddress ip_address
    PrimaryKeyID 通常是来自密钥服务器的密钥 ID,采用 UUID 形式。请勿将密钥名称用于 PrimaryKeyID。PrimaryKeyID 值与供应商有关。请参见您的密钥服务器文档。 New-TrustAuthorityKeyProvider cmdlet 可以采用其他选项,如 KmipServerPortProxyAddressProxyPort。有关详细信息,请参见 New-TrustAuthorityKeyProvider 帮助系统。

    每个逻辑密钥提供程序(无论其类型如何:标准、可信和本机密钥提供程序),都必须在所有 vCenter Server 系统中具有唯一的名称。

    有关详细信息,请参见密钥提供程序命名

    注: 要将多个密钥服务器添加到密钥提供程序,请使用 Add-TrustAuthorityKeyProviderServer cmdlet。
    此时将显示密钥提供程序信息。
  4. 建立可信连接,以便密钥服务器信任可信密钥提供程序。具体过程取决于密钥服务器接受的证书以及您的公司策略。选择适用于服务器的选项,然后完成各个步骤。
    选项 请参见
    上载客户端证书 上载客户端证书以建立可信密钥提供程序可信连接.
    上载 KMS 证书和私钥 上载证书和私钥以建立可信密钥提供程序可信连接.
    新建证书签名请求 创建证书签名请求以建立可信密钥提供程序可信连接.
  5. 通过上载密钥服务器证书完成信任设置,以使可信密钥提供程序信任密钥服务器。
    1. Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA 信息分配给变量。
      例如:
      $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA

      此变量获取给定 Trust Authority 集群(在本例中为 $vTA)中的可信密钥提供程序。

      注: 如果您有多个可信密钥提供程序,请使用如下类似命令选择一个所需的可信密钥提供程序:
      Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
      <The trusted key providers listing is displayed.>
      $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA | Select-Object -Last 1
      

      使用 Select-Object -Last 1 选择列表中的最后一个可信密钥提供程序。

    2. 要获取密钥服务器服务器证书,请运行 Get-TrustAuthorityKeyProviderServerCertificate 命令。
      例如:
      Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers
      此时将显示服务器证书信息。最初,证书不可信,因此“受信任”状态为 False。如果您配置了多个密钥服务器,则会返回证书列表。按照以下说明验证并添加每个证书。
    3. 信任证书之前,请将 Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers 信息分配给变量(例如 cert),然后运行 $cert.Certificate.ToString() 命令并验证输出。
      例如:
      $cert = Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers
      $cert.Certificate.ToString()
      此时将显示证书信息,包括主体、颁发者和其他信息。
    4. 要将 KMIP 服务器证书添加到可信密钥提供程序,请运行 Add-TrustAuthorityKeyProviderServerCertificate
      例如:
      Add-TrustAuthorityKeyProviderServerCertificate -ServerCertificate $cert
      
      此时将显示证书信息,“受信任”状态现在为 True。
  6. 验证密钥提供程序的状态。
    1. 要刷新密钥提供程序状态,请重新分配 $kp 变量。
      例如:
      $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
      注: 如果您有多个可信密钥提供程序,请使用如下类似命令选择一个所需的可信密钥提供程序:
      Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
      <The trusted key providers listing is displayed.>
      $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA | Select-Object -Last 1
      

      使用 Select-Object -Last 1 选择列表中的最后一个可信密钥提供程序。

    2. 运行 $kp.Status 命令,获取密钥提供程序状态。
      例如:
      $kp.Status
      注: 状态可能需要几分钟才会刷新。要查看状态,请重新分配 $kp 变量,然后重新运行 $kp.Status 命令。
    运行状况为“Ok”表示密钥提供程序正常运行。

结果

可信密钥提供程序已创建,并与密钥服务器建立了信任。

示例: 在 Trust Authority 集群上创建密钥提供程序

此示例显示了如何使用 PowerCLI 在 Trust Authority 集群上创建可信密钥提供程序。该示例假设您已经以 Trust Authority 管理员身份连接到 Trust Authority 集群的 vCenter Server。在向供应商提交 CSR 后,它还使用密钥服务器供应商签名的证书。

下表显示了所使用的示例组件和值。

表 1. vSphere Trust Authority 设置示例
组件
变量 $vTA Get-TrustAuthorityCluster 'vTA Cluster'
变量 $kp Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
变量 $cert Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers
Trust Authority 集群的 vCenter Server 192.168.210.22
符合 KMIP 的密钥服务器 192.168.110.91
符合 KMIP 的密钥服务器用户 vcqekmip
Trust Authority 集群名称 vTA Cluster
Trust Authority 管理员 [email protected]
PS C:\Users\Administrator.CORP> Disconnect-VIServer -server * -Confirm:$false
PS C:\Users\Administrator.CORP> Connect-VIServer -server 192.168.210.22 -User [email protected] -Password 'VMware1!'

PS C:\Users\Administrator.CORP> New-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA -PrimaryKeyId 8 -Name clkp -KmipServerAddress 192.168.110.91
Name                 PrimaryKeyId         Type       TrustAuthorityClusterId
----                 ------------         ----       -----------------------
clkp                 8                    KMIP       TrustAuthorityCluster-domain-c8

PS C:\Users\Administrator.CORP> New-TrustAuthorityKeyProviderClientCertificate -KeyProvider $kp
<Export the client certificate when you need to use it.>
PS C:\Users\Administrator.CORP> Export-TrustAuthorityKeyProviderClientCertificate -KeyProvider $kp -FilePath clientcert.pem

PS C:\Users\Administrator.CORP> $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
PS C:\Users\Administrator.CORP> Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers

Certificate                              Trusted    KeyProviderServerId       KeyProviderId
-----------                              -------    -------------------       -------------
[Subject]...                             False      domain-c8-clkp:192.16.... domain-c8-clkp

PS C:\WINDOWS\system32> $cert.Certificate.ToString()
[Subject]
  E=<domain>, CN=<IP address>, OU=VMware Engineering, O=VMware, L=Palo Alto, S=California, C=US

[Issuer]
  O=<host>.eng.vmware.com, C=US, DC=local, DC=vsphere, CN=CA

[Serial Number]
  00CEF192BBF9D80C9F

[Not Before]
  8/10/2015 4:16:12 PM

[Not After]
  8/9/2020 4:16:12 PM

[Thumbprint]
  C44068C124C057A3D07F51DCF18720E963604B70

PS C:\Users\Administrator.CORP> $cert = Get-TrustAuthorityKeyProviderServerCertificate -KeyProviderServer $kp.KeyProviderServers
PS C:\Users\Administrator.CORP> Add-TrustAuthorityKeyProviderServerCertificate -ServerCertificate $cert

Certificate                              Trusted    KeyProviderServerId       KeyProviderId
-----------                              -------    -------------------       -------------
[Subject]...                             True                                 domain-c8-clkp

PS C:\Users\Administrator.CORP> $kp = Get-TrustAuthorityKeyProvider -TrustAuthorityCluster $vTA
PS C:\Users\Administrator.CORP> $kp.Status

KeyProviderId Health HealthDetails ServerStatus
------------- ------ ------------- ------------
domain-c8-kp4     Ok {}            {192.168.210.22}

下一步做什么

继续导出 Trust Authority 集群信息