为 Workload Balancing 配置证书

本节将介绍为确保证书安全可以执行的两项可选任务:

  • 将 XenServer 配置为验证可信证书机构颁发的证书

  • 将 XenServer 配置为验证默认的 Citrix WLB 自签名证书

概述

XenServer 与 Workload Balancing 通过 HTTPS 进行通信。因此,在 Workload Balancing 配置期间,该向导会自动创建一个自签名测试证书。此自签名测试证书允许 Workload Balancing 与 XenServer 建立 SSL 连接。

注意:

自签名证书是一个占位符,可用来方便实现 HTTPS 通信,该证书并非来自可信证书机构。为提高安全性,Citrix 建议使用可信证书机构颁发的证书。

默认情况下,Workload Balancing 将自动与 XenServer 创建此 SSL 连接。在为创建此 SSL 连接而配置 Workload Balancing 期间,或者在此之后,您无需执行任何证书配置。

但是,要使用其他证书颁发机构的证书(例如商业机构颁发的证书),您必须将 Workload Balancing 和 XenServer 配置为使用该证书。

无论 Workload Balancing 使用哪个证书,默认情况下,XenServer 在与 Workload Balancing 建立连接前都不会验证证书的身份。要将 XenServer 配置为对特定证书进行检查,必须导出用来签署该证书的根证书,将其复制到 XenServer,然后将 XenServer 配置为在与 Workload Balancing 建立连接时检查该证书。在这种情况下,XenServer 相当于客户端,Workload Balancing 相当于服务器。

下图显示了 XenServer 在允许 Workload Balancing 虚拟设备通过 SSL 与之建立连接之前,如何验证是否存在特定证书。在这种情况下,真正的证书(具有私钥的证书)位于 Workload Balancing 服务器上,而用于签署该证书的证书位于 XenServer 池主服务器上。

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

将 XenServer 配置为验证自签名证书

可以将 XenServer 配置为在 XenServer 允许 Workload Balancing 建立连接之前验证 Citrix WLB 自签名证书的可信性。

重要:

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

如果想要将 Workload Balancing 配置为验证 Citrix WLB 自签名证书,请执行后面过程中的步骤。

**要将 XenServer 配置为验证自签名证书,请执行以下操作: **

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

    scp root@wlb-ip:/etc/ssl/certs/server.pem。
    
  2. 如果收到指示无法确定 wlb-ip 真实性的消息,请键入 yes 以继续。

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

  4. 安装证书。从要复制的证书所在的目录运行 pool-certificate-install 命令。例如:

    xe pool-certificate-install filename=server.pem
    
  5. 通过在池主服务器上运行 pool-certificate-list 命令来验证证书是否已正确安装:

    xe pool-certificate-list
    

    如果正确安装了证书,此命令的输出中将包括所导出的根证书(例如 server.pem)。运行此命令会列出所有已安装的 SSL 证书,其中包括刚刚安装的证书。

  6. 在池主服务器上运行 pool-certificate-sync 命令,以将主服务器上的证书同步到池中的所有主机:

    xe pool-certificate-sync
    

    在主服务器上运行 pool-certificate-sync 命令可将所有池服务器上的此证书以及证书吊销列表与主服务器进行同步。这样可以确保池中的所有主机使用相同的证书。

    此命令无输出。但如果此命令未成功运行,下一个步骤将无法进行。

  7. 指示 XenServer 在连接 Workload Balancing 虚拟设备前验证证书。在池主服务器上运行以下命令:

    xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool
    

    提示:

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

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

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

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

      xe pool-param-get param-name=wlb-verify-cert uuid=uuid_of_pool
      

将 XenServer 配置为验证证书颁发机构颁发的证书

可以将 XenServer 配置为验证由可信证书机构颁发的证书。

对于可信证书机构颁发的证书,XenServer 需要使用 .pem 格式带公钥的导出证书或证书链(即中间证书和根证书)。

如果希望 Workload Balancing 使用可信证书机构颁发的证书,请执行以下操作:

  1. 从证书颁发机构获得签名证书。请参阅任务 1:获得证书颁发机构颁发的证书

  2. 按照任务 2:指定新证书中的说明指定并应用新证书。

  3. 在池主服务器上安装获取的证书并启用证书验证功能。请参阅任务 3:将证书链导入池中

开始执行这些任务前,请确保:

  • 知道 XenServer 池主服务器的 IP 地址。

  • XenServer 可以解析 Workload Balancing 主机名。(例如,可以从池主服务器的 XenServer 控制台尝试 ping 通 Workload Balancing FQDN。)

重要:

如果要使用 IP 地址连接 Workload Balancing,则在创建证书时必须将该 IP 地址指定为使用者备用名称 (SAN)。

任务 1:获得证书颁发机构颁发的证书

要从证书颁发机构获得证书,必须生成证书签名请求 (CSR)。为 Workload Balancing 虚拟设备生成 CSR 的过程由两个任务组成。必须 (1) 创建私钥,并 (2) 使用该私钥生成 CSR。必须在 Workload Balancing 虚拟设备上执行这两个过程。

指定公用名的指导原则

创建 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 证书必须满足严格的要求,否则证书验证将不会成功,XenServer 将不允许进行连接。同样,要使证书验证成功,必须将这些证书存储在 XenServer 用来查找证书的特定位置。

要创建私钥文件,请执行以下操作:

  1. 创建私钥文件:

    openssl genrsa -des3 -out privatekey.pem 2048
    
  2. 删除密码:

    openssl rsa -in privatekey.pem -out privatekey.nop.pem
    

注意:

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

要生成 CSR,请执行以下操作:

  1. 生成 CSR:

    1. 使用私钥创建 CSR:

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

      Country Name(国家/地区名称)。输入所在国家/地区的 SSL 证书国家/地区代码。例如,CA 代表加拿大,JM 代表牙买加。可以在 Web 上查找 SSL 证书国家/地区代码的列表。

      State or Province Name (full name)(州名或省名(全称))。输入资源池所在的州或省。例如,马萨诸塞或艾伯塔。

      Locality Name(地点名称)。资源池所在城市的名称。

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

      Organizational Unit Name(组织单位名称)。输入部门名称。此字段为可选字段。

      常用名称。输入 Workload Balancing 服务器的 FQDN。此名称必须与池用来连接 Workload Balancing 的名称匹配。

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

    3. 提供可选属性,或单击 Enter 键以跳过提供这些信息。

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

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

    cat csr
    
  3. 复制整个证书请求并使用 CSR 向证书颁发机构请求证书。

任务 2:指定新证书

使用此过程可以指定 Workload Balancing 使用证书颁发机构颁发的证书。此过程将安装根证书(如果可用)和中间证书。

要指定新证书,请执行以下操作:

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

  2. 如果未将证书下载到 Workload Balancing 虚拟设备,执行以下操作之一:

    1. 如果将证书从 Windows 计算机复制到 Workload Balancing 设备,请使用 WinSCP 或其他复制实用程序复制文件。

    对于主机名,可以输入 IP 地址并保留默认端口。通常情况下,用户名为 root,密码为您在配置期间设置的密码。

    1. 如果将证书从 Linux 计算机复制到 Workload Balancing 设备,请使用 SCP 或其他复制实用程序将文件复制到 Workload Balancing 设备上的所选目录。例如:

      scp root_ca.pem root@wlb-ip:/path_on_your_WLB
      
  3. 在 Workload Balancing 虚拟设备上,将所有证书(根证书、中间证书(如果存在)和签名证书)合并成一个文件。例如:

    cat signed_cert.pem intermediate_ca.pem root_ca.pem > server.pem
    
  4. 使用 move 命令重命名现有证书和密钥:

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

    mv server.pem /etc/ssl/certs/server.pem
    
  6. 复制以前创建的私钥:

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

    chmod 600 /etc/ssl/certs/server.key
    
  8. 重新启动 stunnel

    killall stunnel
    stunnel
    

任务 3:将证书链导入池中

获取证书后,必须将证书导入(安装至)XenServer 池主服务器,并同步池中的主机以使用这些证书。然后可以配置 XenServer,使其在 Workload Balancing 每次连接 主机时验证证书的身份和有效性。

  1. 将签名证书、根证书和证书颁发机构颁发的中间证书(如果证书颁发机构有中间证书)复制到 XenServer 池主服务器中。

  2. 在池主服务器上安装根证书:

    xe pool-certificate-install filename=root_ca.pem
    
  3. 如果适用,在池主服务器上安装中间证书:

    xe pool-certificate-install filename=intermediate_ca.pem
    
  4. 通过在池主服务器上运行此命令来验证两种证书都已正确安装:

    xe pool-certificate-list
    

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

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

    xe pool-certificate-sync
    

    在主服务器上运行 pool-certificate-sync 命令可将所有池服务器上的此证书以及证书吊销列表与池主服务器进行同步。这样可以确保池中的所有主机使用相同的证书。

  6. 指示 XenServer 在连接 Workload Balancing 虚拟设备前验证证书。在池主服务器上运行以下命令:

    xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool
    

    提示:

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

  7. 如果在启用证书验证前,在“连接 WLB”对话框中指定了 IP 地址,系统可能会提示您将池重新连接到 Workload Balancing。

    在这种情况下,请在“连接 WLB”对话框的“地址”框中为 Workload Balancing 设备指定与在证书公用名 (CN) 中显示的完全相同的 FQDN。(公用名必须与 XenServer 用来进行连接的名称一致,因此必须输入 FQDN。)

故障排除提示

  • 如果在配置证书验证后池无法连接到 Workload Balancing,请检查在关闭证书验证的情况下池能否连接(通过运行 xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool)。如果在关闭验证功能的情况下可以进行连接,问题可能出在证书配置。如果不能连接,则问题可能出在 Workload Balancing 凭据或网络连接。

  • 一些商业证书颁发机构提供多种工具来验证证书安装的正确性。如果上述过程无法帮助解决问题,可以考虑运行这些工具。如果这些工具要求指定 SSL 端口,请指定端口 8012 或者在 Workload Balancing 配置期间设置的端口。

  • 在执行这些过程之后,如果在 WLB 选项卡上显示一条错误消息,内容是“There was an error connecting to the WLB server”(连接 WLB 服务器时出错),则说明证书中的公用名与 Workload Balancing 虚拟设备名称之间可能存在冲突。Workload Balancing 虚拟设备的名称与证书的公用名必须完全匹配。

为 Workload Balancing 配置证书