XenServer

工作负载平衡的证书

XenServer® 和工作负载平衡通过 HTTPS 进行通信。在工作负载平衡配置期间,向导 会自动创建一个自签名测试证书。此自签名测试证书允许工作负载平衡 与 XenServer 建立 TLS 连接。默认情况下,工作负载平衡会自动与 XenServer 创建此 TLS 连接。您无需在配置期间或配置之后执行任何证书配置,即可让工作负载 平衡创建此 TLS 连接。

注意:

自签名证书是用于促进 HTTPS 通信的占位符,并非来自受信任的证书 颁发机构。为了增强安全性,我们建议使用由受信任的证书颁发机构签名的证书。

要使用来自其他证书颁发机构(例如商业颁发机构签名的证书)的证书,您必须 配置工作负载平衡和 XenServer 以使用它。

默认情况下,XenServer 在建立与 Workload Balancing 的连接之前会验证证书的身份。要配置 XenServer 以检查特定证书,请导出用于 签署证书的根证书。将证书复制到 XenServer,并配置 XenServer 以在建立与 Workload Balancing 的连接时检查该证书。在此场景中,XenServer 充当客户端,Workload Balancing 充当服务器。

根据您的安全目标,您可以选择:

![XenServer 在允许工作负载平衡虚拟设备通过 TLS 连接到它之前,会检查是否存在特定证书。在这种情况下,真实证书(带有私钥的证书)位于工作负载平衡服务器上。用于签署它的证书位于 XenServer 池协调器上。]](/en-us/xenserver/9/media/wlb-certificates.png)

注意:

证书验证是一种旨在防止不必要连接的安全措施。工作负载平衡 证书必须满足严格要求,否则证书验证将不会成功。如果证书 验证失败,XenServer 将不允许连接。

要使证书验证成功,您必须将证书存储在 XenServer 预期 找到证书的特定位置。

自动导入证书

在 XenCenter® 2025.1 及更高版本和工作负载平衡 8.4.0 及更高版本中,XenCenter 在首次配置与工作负载 平衡的连接时会自动导入工作负载平衡证书。

如果运行 XenCenter 的 Windows 系统无法访问 Workload Balancing 虚拟设备——例如,如果用于 Workload Balancing 和 XenServer 之间通信的端口被禁用,则无法自动导入证书,您必须手动将 Workload Balancing 证书 安装到您的池中。

配置 XenServer 以验证自签名证书

您可以配置 XenServer,使其在 XenServer 允许 Workload Balancing 连接之前, 验证 XenServer Workload Balancing 自签名证书的真实性。

重要提示:

要验证 XenServer Workload Balancing 自签名证书,您必须使用其主机名连接到 Workload Balancing。要查找 Workload Balancing 主机名, 请在虚拟设备上运行 hostname 命令。

要配置 XenServer 以验证自签名证书,请完成以下步骤:

  1. 将自签名证书从 Workload Balancing 虚拟设备复制到池协调器。XenServer Workload Balancing 自签名证书存储在 /etc/ssl/certs/server.pem。 在池协调器上运行以下 命令:

    scp root@<wlb-ip>:/etc/ssl/certs/server.pem wlb.pem
    <!--NeedCopy-->
    
  2. 如果您收到一条消息,指出无法建立 wlb-ip 的真实性,请键入 yes 以继续。

  3. 出现提示时,输入 Workload Balancing 虚拟设备的 root 密码。证书将复制到当前 目录。

  4. 安装证书。在您复制证书的目录中运行以下命令:

    xe pool-certificate-install filename=wlb.pem
    <!--NeedCopy-->
    
  5. 通过在池协调器上运行以下命令来验证证书是否已正确安装:

    xe pool-certificate-list
    <!--NeedCopy-->
    

    如果您正确安装了证书,此命令的输出将包含导出的根证书。 运行此命令会列出所有已安装的 TLS 证书,包括您安装的证书。

  6. 要将证书从协调器同步到池中的所有主机,请在 池协调器上运行以下命令:

    xe pool-certificate-sync
    <!--NeedCopy-->
    

    在协调器上运行 pool-certificate-sync 命令会将所有池主机上的证书和证书 吊销列表与协调器同步。此操作可确保池中的所有主机使用 相同的证书。

    此命令没有输出。但是,如果此步骤未成功,则下一步将无法工作。

  7. 指示 XenServer 在连接到工作负载平衡虚拟设备之前验证证书。请在池协调器上运行 以下命令:

    xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool
    <!--NeedCopy-->
    

    提示:

    按下 Tab 键会自动填充池的 UUID。

  8. (可选)要验证此过程是否成功,请执行以下步骤:

    1. 要测试证书是否已同步到池中的其他主机,请在这些主机上运行 pool-certificate-list 命令。

    2. 要测试 XenServer 是否设置为验证证书,请运行 pool-param-get 命令,并使用 param-name=wlb-verify-cert 参数。例如:

      xe pool-param-get param-name=wlb-verify-cert uuid=uuid_of_pool
      <!--NeedCopy-->
      

配置 XenServer 以验证证书颁发机构证书

您可以将 XenServer 配置为验证由受信任的证书颁发机构签名的证书。

对于受信任的颁发机构证书,XenServer 需要导出证书或证书链(中间证书 和根证书),采用 .pem 格式,其中包含公钥。

如果您希望工作负载平衡使用受信任的颁发机构证书,请执行以下任务:

  1. 从证书颁发机构获取签名证书

  2. 指定并应用新证书

  3. 将证书链导入池

在开始这些任务之前,请确保:

  • 您知道 XenServer 池协调器的 IP 地址。

  • XenServer 可以解析 Workload Balancing 主机名。(例如,您可以尝试从 XenServer 控制台 ping Workload Balancing FQDN,以获取池协调器。)

从证书颁发机构获取签名证书

要从证书颁发机构获取证书,您必须生成证书签名请求 (CSR)。在 Workload Balancing 虚拟设备上,创建私钥并使用该私钥生成 CSR。

指定公用名的准则

创建 CSR 时指定的公用名 (CN) 必须与您的 Workload Balancing 虚拟设备的 FQDN 完全匹配。 它还必须与您在“连接到 WLB 服务器”对话框的“地址”框中指定的 FQDN 或 IP 地址匹配。

为确保名称匹配,请使用以下准则之一指定公用名:

  • 为证书的公用名指定与您在“连接到 WLB 服务器” 对话框中指定的信息相同的内容。

    例如,如果您的 Workload Balancing 虚拟设备名为 wlb-vpx.yourdomain,请在“连接到 WLB 服务器”对话框中指定 wlb-vpx.yourdomain,并在创建 CSR 时将 wlb-vpx.yourdomain 作为 公用名提供。

  • 如果您通过 IP 地址将池连接到 Workload Balancing,请使用 FQDN 作为公用名,并使用 IP 地址 作为主题备用名称 (SAN)。但是,此方法可能并非在所有情况下都适用。

创建私钥文件

在 Workload Balancing 虚拟设备上,完成以下步骤:

  1. 创建私钥文件:

    openssl genrsa -des3 -out privatekey.pem 2048
    <!--NeedCopy-->
    
  2. 删除密码:

    openssl rsa -in privatekey.pem -out privatekey.nop.pem
    <!--NeedCopy-->
    

注意:

如果您输入密码不正确或不一致,您可能会收到一些消息,指示存在用户界面 错误。您可以忽略该消息并重新运行命令以创建私钥文件。

生成证书签名请求

在 Workload Balancing 虚拟设备上,完成以下步骤:

  1. 使用私钥创建证书签名请求 (CSR):

    openssl req -new -key privatekey.nop.pem -out csr
    <!--NeedCopy-->
    
  2. 按照提示提供生成 CSR 所需的信息:

    国家名称。输入您所在国家/地区的 TLS 证书国家/地区代码。例如,加拿大的 CA 或牙买加的 牙买加。您可以在网上找到 TLS 证书国家/地区代码列表。

    州或省名称(全称)。输入池所在的州或省。例如, 马萨诸塞州或艾伯塔省。

    地区名称。池所在的城市名称。

    组织名称。您的公司或组织的名称。

    组织单位名称。输入部门名称。此字段是可选的。

    通用名称。输入 Workload Balancing 服务器的 FQDN。此值必须与池用于 连接 Workload Balancing 的名称匹配。有关详细信息,请参阅 指定通用名称的准则

    电子邮件地址。生成证书时,此电子邮件地址将包含在证书中。

  3. 提供可选属性或单击 Enter 跳过提供此信息。

    CSR 请求将保存在当前目录中,并命名为 csr

  4. 通过在 Workload Balancing 设备控制台中运行以下命令,在控制台窗口中显示 CSR:

    cat csr
    <!--NeedCopy-->
    
  5. 复制整个 CSR,并使用它向证书颁发机构请求证书。

指定并应用新证书

使用此过程指定工作负载平衡使用来自证书颁发机构的证书。此过程 安装根证书和(如果可用)中间证书。

要指定新证书,请完成以下步骤:

  1. 从证书颁发机构下载签名证书、根证书以及(如果证书颁发机构有)中间 证书。

  2. 如果您没有将证书直接下载到工作负载平衡虚拟设备,请使用以下方法之一 复制它们:

    • 从 Windows 计算机,使用 WinSCP 或其他复制实用程序。

      对于主机名,您可以输入 IP 地址并将端口保留为默认值。用户名和密码 通常是 root 以及您在配置期间设置的任何密码。

    • 从 Linux 计算机到工作负载平衡设备,使用 SCP 或其他复制实用程序。例如:

       scp root_ca.pem root@wlb-ip:/path_on_your_WLB
       <!--NeedCopy-->
      
  3. 在工作负载平衡虚拟设备上,将所有证书(根证书、 中间证书(如果存在)和签名证书)的内容合并到一个文件中。您可以使用以下命令:

    cat signed_cert.pem intermediate_ca.pem root_ca.pem > server.pem
    <!--NeedCopy-->
    
  4. 使用移动命令重命名现有证书和密钥:

    mv /etc/ssl/certs/server.pem /etc/ssl/certs/server.pem_orig
    mv /etc/ssl/certs/server.key /etc/ssl/certs/server.key_orig
    <!--NeedCopy-->
    
  5. 复制合并的证书:

    mv server.pem /etc/ssl/certs/server.pem
    <!--NeedCopy-->
    
  6. 复制之前创建的私钥:

    mv privatekey.nop.pem /etc/ssl/certs/server.key
    <!--NeedCopy-->
    
  7. 使私钥仅可由 root 读取。使用 chmod 命令修复权限。

    chmod 600 /etc/ssl/certs/server.key
    <!--NeedCopy-->
    
  8. 重新启动 stunnel

    pkill -9 stunnel
    stunnel
    <!--NeedCopy-->
    

将证书链导入池

获取证书后,将其导入 XenServer 池协调器。同步池中的主机 以使用这些证书。然后,您可以配置 XenServer,使其在每次 工作负载平衡连接到主机时检查证书身份和有效性。

  1. 将签名证书、根证书以及(如果证书颁发机构有)中间 证书从证书颁发机构复制到 XenServer 池协调器。

  2. 在池协调器上安装根证书:

    xe pool-install-ca-certificate filename=root_ca.pem
    <!--NeedCopy-->
    
  3. 如果适用,在池协调器上安装中间证书:

    xe pool-install-ca-certificate filename=intermediate_ca.pem
    <!--NeedCopy-->
    
  4. 通过在池协调器上运行此命令来验证两个证书是否已正确安装:

    xe pool-certificate-list
    <!--NeedCopy-->
    

    运行此命令会列出所有已安装的 TLS 证书。如果证书安装成功,它们将显示 在此列表中。

  5. 将池协调器上的证书同步到池中的所有主机:

    xe pool-certificate-sync
    <!--NeedCopy-->
    

    在协调器上运行 pool-certificate-sync 命令会将所有池主机上的证书和证书 吊销列表与池协调器同步。此操作可确保池中的所有主机都使用 相同的证书。

  6. 指示 XenServer 在连接到工作负载平衡虚拟设备之前验证证书。在池协调器上运行 以下命令:

    xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool
    <!--NeedCopy-->
    

    提示:

    按 Tab 键会自动填充池的 UUID。

  7. 如果您在启用证书验证之前在“连接到 WLB 服务器”对话框中指定了 IP 地址, 系统可能会提示您将池重新连接到工作负载平衡。

    在“连接到 WLB 服务器”对话框的“地址”中指定工作负载平衡设备的 FQDN, 使其与证书的通用名称中显示的内容完全一致。输入 FQDN 以确保通用名称与 XenServer 用于连接的名称匹配。

故障排除

  • 证书验证在您的池上默认启用。如果您的池无法 连接到工作负载平衡,请禁用证书验证:

    1. 获取池 UUID:

      xe pool-list
      <!--NeedCopy-->
      
    2. 禁用证书验证:

      xe pool-param-set wlb-verify-cert=false uuid=uuid_of_pool
      <!--NeedCopy-->
      

    如果您的池在禁用证书验证的情况下可以连接到 Workload Balancing,则问题出在您的 证书配置。如果无法连接,则问题出在您的 Workload Balancing 凭据或 您的网络连接。请联系支持人员或参阅 排查 Workload Balancing 故障 以获取更多信息。

  • 一些商业证书颁发机构提供工具来验证证书是否正确安装。如果 这些过程无法帮助隔离问题,请考虑运行这些工具。如果这些工具需要指定 TLS 端口,请指定端口 8012 或您在 Workload Balancing 配置期间设置的任何端口。

  • 如果 WLB 选项卡显示连接错误,则证书通用名称与 Workload Balancing 虚拟设备的名称之间可能存在冲突。Workload Balancing 虚拟设备名称和证书的通用名称 必须完全匹配。

有关详细信息,请参阅 (/zh-cn/xenserver/9/wlb/troubleshoot.html)。

重新生成自签名证书

如果 Workload Balancing 虚拟设备的 IP 地址发生更改且不再与证书中的值一致, Workload Balancing 会在其控制台中显示警告消息。

要解决此警告,请完成以下步骤:

  1. 登录到您的 Workload Balancing 虚拟设备。
  2. 通过运行以下命令重新生成证书:wlb_update_cert.sh
  3. 重新连接到 Workload Balancing 虚拟设备。
工作负载平衡的证书