Linux 仮想配信エージェント 2503

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

2402 LTSRの初回リリース以降、Citrix Virtual Apps and Desktopsでは、Citrix Brokering Protocol (CBP) を介してWebSocketテクノロジーを使用し、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. 生成された証明書要求ファイルをテキストエディター (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内のデフォルトの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用の自己署名証明書の設定