Linux Virtual Delivery Agent 2507 LTSR

WebSocket用自己署名証明書の設定

2402 LTSRの初回リリース以降、Citrix Virtual Apps and Desktopsでは、WebSocketテクノロジーをCitrix Brokering Protocol (CBP) 経由で使用して、VDAとDelivery Controller間の通信を容易にできるようになりました。この機能では、VDAからDelivery Controllerへの通信にTLSポート443のみが必要です。詳細については、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. 生成された証明書要求ファイルをメモ帳などのテキストエディターで開き、その中のすべてのコンテンツを選択します。

    生成された証明書要求ファイルを開く

  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内のデフォルトのWebサイトにバインドします。

    インポートした証明書のバインド

  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用自己署名証明書の設定