Linux 虚拟投递代理 2507 LTSR

为 WebSocket 配置自签名证书

从 2402 LTSR 的初始版本开始,Citrix Virtual Apps and Desktops 允许您通过 Citrix 代理协议 (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:
  3. 运行以下 nmcli 命令以获取连接名称列表:

    sudo nmcli connection
    <!--NeedCopy-->
    
  4. 运行另一个 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-->
    
  5. 通过运行以下任一命令重新加载新的 DNS 设置:

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

    有关详细信息,请参阅 https://www.cyberciti.biz/faq/change-dns-ip-address-rhel-redhat-linux/

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

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

    启动证书请求

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

    选择位长度

      1. 为您的证书请求文件分配一个描述性名称,以便于识别。
    • 命名证书请求文件
  3. 使用文本编辑器(如 Notepad)打开生成的证书请求文件,并选择其中的所有内容。

    打开生成的证书请求文件

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

    登录到您的 Web 证书服务器

    高级证书请求

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

    提交证书请求

  6. 下载 Base 64 编码格式的证书。

    下载证书

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

    完成证书请求

步骤 3:绑定 Delivery Controller FQDN 证书

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

    导出 Delivery Controller FQDN 证书

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

    导入导出的 PFX 证书

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

    绑定导入的证书

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

    在绑定期间选择导入的证书

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

  1. 下载 CA 证书。例如:

    下载 CA 证书

  2. 放置并更新 CA 证书。

    • 对于 RHEL 和 Rocky Linux:

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

    • 对于 SUSE、Ubuntu 和 Debian:

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

为 WebSocket 配置自签名证书