Linux Virtual Delivery Agent 2503

为 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)。

    Initiate a certificate request

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

    Select a bit length

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

    Open the generated certificate request file

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

    Log in to your web certificate server

    Advanced certificate request

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

    Submit a certificate request

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

    Download the certificate

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

    Complete the certificate request

步骤 3:绑定 Delivery Controller FQDN 证书

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

    Export the Delivery Controller FQDN certificate

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

    Import the exported PFX certificate

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

    Bind the imported certificate

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

    Select the imported certificate during binding

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

  1. 下载 CA 证书。例如:

    Download a CA certificate

  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 配置自签名证书