Linux Virtual Delivery Agent

为 WebSocket 配置自签名证书

自 2402 LTSR 的初始版本起,Citrix Virtual Apps and Desktops 允许您通过 Citrix Brokering Protocol (CBP) 使用 WebSocket 技术来促进 VDA 与 Delivery Controller 之间的通信。 此功能只需要 TLS 端口 443 即可实现从 VDA 到 Delivery Controller 的通信。 有关详细信息,请参阅 Citrix Virtual Apps and Desktops 文档中的 VDA 与 Delivery Controller 之间的 WebSocket 通信

WebSocket 是一种强大的技术,可实现客户端与服务器之间的实时双向通信。 但是,为了确保安全连接,特别是在使用 wss:// 时,通常需要配置自签名证书,尤其是在开发或测试环境中。 本文概述了为 WebSocket 配置自签名证书的最佳做法。

步骤 1:(仅适用于未加入域的 VDA)配置 DNS 服务器

  • 对于 Ubuntu 和 Debian VDA:
  1. 通过编辑 /etc/systemd/resolved.conf 来更改 DNS 设置,如下所示:

      [Resolve]
      # Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
      # Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
      # Google:     8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
      # Quad9:      9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
      DNS=<DNS IP address>
      #FallbackDNS=
      #Domains=
      #DNSSEC=no
      #DNSOverTLS=no
      #MulticastDNS=no
      #LLMNR=no
      #Cache=no-negative
      #CacheFromLocalhost=no
      #DNSStubListener=yes
      #DNSStubListenerExtra=
      #ReadEtcHosts=yes
      #ResolveUnicastSingleLabel=no
    <!--NeedCopy-->
    
  2. 重新启动 systemd-resolved 服务。

      sudo service systemd-resolved restart
    <!--NeedCopy-->
    

    有关详细信息,请参阅 https://notes.enovision.net/linux/changing-dns-with-resolve

  • 对于 RHEL、Rocky Linux 和 SUSE VDA:
  1. 运行以下 nmcli 命令以获取连接名称列表:

      sudo nmcli connection
    <!--NeedCopy-->
    
  2. 运行另一个 nmcli 命令以设置 DNS IP 地址:

      sudo nmcli con mod {connectionNameHere} ipv4.dns "<dns ip address>"
    <!--NeedCopy-->
    

    例如,可以使用以下命令将 DNS IP 地址设置为 192.168.2.254:

      sudo nmcli con mod eth0 ipv4.dns "192.168.2.254"
    <!--NeedCopy-->
    
  3. 通过运行以下任一命令重新加载新 DNS 设置:

      sudo systemctl restart NetworkManager.service
    <!--NeedCopy-->
    
      sudo nmcli connection reload
    <!--NeedCopy-->
    

    For more information, see https://www.cyberciti.biz/faq/change-dns-ip-address-rhel-redhat-linux/.

步骤 2:向证书颁发机构 (CA) 请求证书

  1. 发起证书请求。 当您发起证书请求时,请填写 Delivery Controller 的完全限定域名 (FQDN)。

    发起证书请求

  2. 选择 2048 或更高的位长度以确保证书的强大安全性。

    选择位长度

  3. 为您的证书请求文件分配一个描述性名称以便于识别。

    命名证书请求文件

  4. 使用记事本等文本编辑器打开生成的证书请求文件并选择其中的所有内容。

    打开生成的证书请求文件

  5. 登录您的 Web 证书服务器并继续请求证书。

    登录到您的 Web 证书服务器

    高级证书请求

  6. 将复制的请求文件内容粘贴到 Web 服务器上的相应字段中,并选择 Web 服务器证书模板。

    提交证书请求

  7. 以 Base 64 编码格式下载证书。

    下载证书

  8. 完成证书请求。 下载完成后,证书请求过程完成。

    完成证书请求

步骤 3:绑定 Delivery Controller FQDN 证书

  1. 将 Delivery Controller FQDN 证书导出为 PFX 文件。

    导出 Delivery Controller FQDN 证书

  2. 将导出的 PFX 证书导入到 Delivery Controller 服务器的 Internet Information Services (IIS)。

    导入导出的 PFX 证书

  3. 将导入的证书绑定到 IIS 中的默认 Web 站点。

    绑定导入的证书

  4. 在绑定过程中,请务必选择您导入的特定证书。

    绑定过程中选择导入的证书

步骤 4:在 Linux VDA 上保存并更新 CA 证书

  1. 下载 CA 证书。 例如:

    下载 CA 证书

  2. 放置并更新 CA 证书。

    • 对于 RHEL 和 Rock Linux:

      使用 trust anchor 命令添加 CA 证书。 请确保未将证书手动放置到 /etc/pki/ca-trust/source/anchors 目录中。 如果遇到与只读字段相关的错误,请删除该目录中存在的所有证书。

    • 对于 SUSE、Ubuntu 和 Debian:

      将根 CA 证书放置在 /usr/local/share/ca-certificates 目录中。 如果证书没有 .crt 扩展名,请相应地进行重命名。 然后,运行 update-ca-certificate 命令。

为 WebSocket 配置自签名证书