Linux Virtual Delivery Agent

スマートカード

  • Linux仮想デスクトップセッションへのログオン時、クライアントデバイスに接続されたスマートカードを認証に使用できます。この機能は、ICA®スマートカード仮想チャネルを介したスマートカードリダイレクトによって実装されます。セッション内でスマートカードを使用することもできます。ユースケースには以下が含まれます。

  • ドキュメントへのデジタル署名の追加
  • メールの暗号化または復号化
  • Webサイトへの認証

Linux VDAは、この機能に関してWindows VDAと同じ構成を使用します。詳細については、この記事の「スマートカード環境の構成」セクションを参照してください。

  • 注:

    Linux VDAセッション内でマップされたスマートカードを使用してCitrix Gatewayにサインオンすることはサポートされていません。

サポートされるLinuxディストリビューションとAD統合方法の制限

  • スマートカードパススルー認証は、サポートされるLinuxディストリビューションとAD統合方法が制限されています。次のマトリックスを参照してください。

      Winbind SSSD Centrify Quest
    Debian 12.12 はい はい はい はい
    Debian 13 はい はい はい いいえ
    RHEL 10/9.7/9.6/9.4 はい はい はい はい
  • RHEL 8.10 はい はい はい はい
  • Rocky Linux 10/9.7/9.6/9.4 はい はい はい はい
    Rocky Linux 8.10 はい はい はい はい
    Ubuntu 24.04 はい はい はい はい
    Ubuntu 22.04 はい はい はい はい

前提条件

スマートカードパススルー認証の可用性は、次の条件に依存します。

  • Linux VDAがDelivery Controller™に登録でき、Windows資格情報を使用して公開されたLinuxデスクトップセッションを開くことができること。

  • OpenSCでサポートされているスマートカードが使用されていること。詳細については、「OpenSCがスマートカードをサポートしていることを確認する」を参照してください。

OpenSCがスマートカードをサポートしていることを確認

OpenSCは、RHEL 7.4以降で広く使用されているスマートカードドライバーです。CoolKeyの完全に互換性のある代替品として、OpenSCは多くの種類のスマートカードをサポートしています(「Red Hat Enterprise Linuxでのスマートカードのサポート」を参照)。

この記事では、YubiKeyスマートカードを構成の例として使用します。YubiKeyは、Amazonやその他の小売業者から簡単に購入できるオールインワンのUSB CCID PIVデバイスです。OpenSCドライバーはYubiKeyをサポートしています。

組織でより高度なスマートカードが必要な場合は、サポートされているLinuxディストリビューションとOpenSCパッケージがインストールされた物理マシンを準備してください。OpenSCのインストールについては、「スマートカードドライバーのインストール」を参照してください。スマートカードを挿入し、次のコマンドを実行してOpenSCがスマートカードをサポートしていることを確認します。

pkcs11-tool --module opensc-pkcs11.so --list-slots
<!--NeedCopy-->

構成

ルート証明書の準備

ルート証明書は、スマートカード上の証明書を検証するために使用されます。ルート証明書をダウンロードしてインストールするには、次の手順を実行します。

  1. 通常、CAサーバーからPEM形式のルート証明書を取得します。

    DERファイル(*.crt、*.cer、*.der)をPEMに変換するには、次のようなコマンドを実行します。次のコマンド例では、certnew.cerはDERファイルです。

    openssl x509 -inform der -in certnew.cer -out certnew.pem
    <!--NeedCopy-->
    
  2. ルート証明書をopensslディレクトリにインストールします。certnew.pemファイルは例として使用されます。

    cp certnew.pem <path where you install the root certificate>
    <!--NeedCopy-->
    

    ルート証明書をインストールするためのパスを作成するには、sudo mdkir -p <path where you install the root certificate>を実行します。

スマートカード環境の構成

ctxsmartlogon.shスクリプトを使用してスマートカード環境を構成するか、手動で構成を完了できます。

  • (オプション1)ctxsmartlogon.shスクリプトを使用したスマートカード環境の構成

  • 注:

    ctxsmartlogon.shスクリプトは、PKINIT情報をデフォルトレルムに追加します。この設定は、/etc/krb5.conf構成ファイルで変更できます。

スマートカードを初めて使用する前に、ctxsmartlogon.shスクリプトを実行してスマートカード環境を構成します。

ヒント:

ドメイン参加にSSSDを使用している場合は、ctxsmartlogon.shを実行した後、SSSDサービスを再起動してください。 RHEL 8以降では、PAM_KRB5がEPELリポジトリに移動されたため、スクリプトはこれらのディストリビューションでEPELを有効にしようとします。

sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->

結果は次のようになります。

ctxsmartlogon.shスクリプトを実行して「はい」を選択

注:

ドメイン参加方法としてQuestを使用する場合、Key Distribution Center(KDC)のホスト名を指定する必要があります。例:

KDCのホスト名の指定が必要

ctxsmartlogon.shスクリプトを実行してスマートカードを無効にすることもできます。

sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->

結果は次のようになります。

ctxsmartlogon.shスクリプトを実行して「いいえ」を選択

(オプション2)スマートカード環境の手動構成

Linux VDA は Windows VDA と同じスマートカード環境を使用します。この環境では、ドメインコントローラー、Microsoft 証明機関 (CA)、Internet Information Services、Citrix StoreFront、Citrix Workspace アプリなど、複数のコンポーネントを設定する必要があります。YubiKey スマートカードに基づいた構成については、Knowledge Center の記事 CTX206156 を参照してください。

次のステップに進む前に、以下を確認してください。

  • すべてのコンポーネントが正しく構成されていること。
  • 秘密キーとユーザー証明書がスマートカードにダウンロードされていること。
  • スマートカードを使用して VDA に正常にログオンできること。
PC/SC Lite パッケージのインストール

PCSC Lite は、Linux における Personal Computer/Smart Card (PC/SC) 仕様の実装です。スマートカードおよびリーダーと通信するための Windows スマートカードインターフェイスを提供します。Linux VDA のスマートカードリダイレクトは、PC/SC レベルで実装されています。

PC/SC Lite パッケージをインストールするには、次のコマンドを実行します。

RHEL 9.x/8.x、Rocky Linux 9.x/8.x:

yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->

Ubuntu 24.04、Ubuntu 22.04、Debian 12.x、Debian 11.11:

apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
スマートカードドライバーのインストール

OpenSC は広く使用されているスマートカードドライバーです。OpenSC がインストールされていない場合は、次のコマンドを実行してインストールします。

RHEL 9.x/8.x、Rocky Linux 9.x/8.x:

yum install opensc
<!--NeedCopy-->

Ubuntu 24.04、Ubuntu 22.04、Debian 12.x、Debian 11.11:

-  apt-get install -y opensc
<!--NeedCopy-->
スマートカード認証用 PAM モジュールのインストール

pam_krb5 および krb5-pkinit モジュールをインストールするには、次のコマンドを実行します。

RHEL 9.x/8.x、Rocky Linux 9.x/8.x:

yum install krb5-pkinit
<!--NeedCopy-->

Ubuntu 24.04、Ubuntu 22.04:

apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->

Debian 12.x、Debian 11.11:

apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->

pam_krb5 モジュールは、プラガブル認証モジュールです。PAM 対応アプリケーションは pam_krb5 を使用してパスワードをチェックし、Key Distribution Center (KDC) からチケット保証チケットを取得できます。krb5-pkinit モジュールには、クライアントが秘密キーと証明書を使用して KDC から初期資格情報を取得できるようにする PKINIT プラグインが含まれています。

pam_krb5 モジュールの構成

pam_krb5 モジュールは KDC と連携して、スマートカード内の証明書を使用して Kerberos チケットを取得します。PAM で pam_krb5 認証を有効にするには、次のコマンドを実行します。

authconfig --enablekrb5 --update
<!--NeedCopy-->

/etc/krb5.conf 構成ファイルに、実際のレルムに従って PKINIT 情報を追加します。

注:

pkinit_cert_match オプションは、PKINIT 認証を試行する前にクライアント証明書が一致する必要がある照合ルールを指定します。照合ルールの構文は次のとおりです。

[relation-operator] component-rule …

ここで、relation-operator&& (すべてのコンポーネントルールが一致する必要があることを意味します) または || (いずれか 1 つのコンポーネントルールが一致する必要があることを意味します) のいずれかです。

一般的な krb5.conf ファイルの例を次に示します。

EXAMPLE.COM = {

    kdc = KDC.EXAMPLE.COM

    auth_to_local = RULE:[1:$1@$0]

    pkinit_anchors = FILE:<path where you install the root certificate>/certnew.pem

    pkinit_kdc_hostname = KDC.EXAMPLE.COM

    pkinit_cert_match = ||<EKU>msScLogin,<KU>digitalSignature

    pkinit_eku_checking = kpServerAuth

 }
<!--NeedCopy-->

PKINIT 情報を追加すると、構成ファイルは次のようになります。

追加された PKINIT 情報

PAM 認証の構成

PAM 構成ファイルは、PAM 認証に使用されるモジュールを示します。pam_krb5 を認証モジュールとして追加するには、/etc/pam.d/smartcard-auth ファイルに次の行を追加します。

auth [success=done ignore=ignore default=die] pam_krb5.so preauth_options=X509_user_identity=PKCS11:<path to the pkcs11 driver>/opensc-pkcs11.so

SSSD を使用する場合、変更後の構成ファイルは次のようになります。

SSSD を使用する場合の変更された構成ファイル

(オプション) スマートカードを使用したシングルサインオン

シングルサインオン (SSO) は、仮想デスクトップおよびアプリケーションの起動時にパススルー認証を実装する Citrix の機能です。この機能により、ユーザーが PIN を入力する回数が減ります。Linux VDA で SSO を使用するには、Citrix Workspace アプリを設定します。構成は Windows VDA と同じです。詳細については、Knowledge Center の記事 CTX133982 を参照してください。

Citrix Workspace™アプリでグループポリシーを設定する際に、スマートカード認証を次のように有効にします。

Workspaceアプリでのスマートカード認証の有効化

高速スマートカードログオン

高速スマートカードは、既存のHDX PC/SCベースのスマートカードリダイレクトを改善したものです。高遅延のWAN環境でスマートカードを使用する場合のパフォーマンスを向上させます。詳細については、「スマートカード」を参照してください。

Linux VDAは、Citrix Workspaceアプリの以下のバージョンで高速スマートカードをサポートしています。

  • Citrix Receiver for Windows 4.12
  • Citrix Workspace app 1808 for Windows以降

クライアントでの高速スマートカードログオンの有効化

高速スマートカードログオンは、VDAではデフォルトで有効になっており、クライアントではデフォルトで無効になっています。クライアントで高速スマートカードログオンを有効にするには、関連するStoreFrontサイトのdefault.icaファイルに次のパラメーターを含めます。

[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->

クライアントでの高速スマートカードログオンの無効化

クライアントで高速スマートカードログオンを無効にするには、関連するStoreFrontサイトのdefault.icaファイルからSmartCardCryptographicRedirectionパラメーターを削除します。

XDPingの実行

前述の手順を完了した後、Linux XDPingツールを使用して、Linux VDA環境に存在する可能性のある一般的な構成の問題を確認できます。

使用方法

スマートカードを使用したLinux VDAへのログオン

スマートカードを使用して、SSOシナリオと非SSOシナリオの両方でLinux VDAにログオンできます。

  • SSOシナリオでは、キャッシュされたスマートカード証明書とPINを使用してStoreFront™に自動的にログオンします。StoreFrontでLinux仮想デスクトップセッションを起動すると、PINがスマートカード認証のためにLinux VDAに渡されます。
  • 非SSOシナリオでは、証明書を選択し、PINを入力してStoreFrontにログオンするよう求められます。

    StoreFrontにログオンするためのPINの入力

StoreFrontでLinux仮想デスクトップセッションを起動すると、Linux VDAへのログオンダイアログボックスが次のように表示されます。ユーザー名はスマートカード内の証明書から抽出され、ログオン認証のためにPINを再度入力する必要があります。

この動作はWindows VDAと同じです。

ログオン認証

スマートカードを使用したセッションへの再接続

セッションに再接続するには、スマートカードがクライアントデバイスに接続されていることを確認してください。そうしないと、スマートカードが接続されていないために再認証が失敗し、Linux VDA側で灰色のキャッシュウィンドウが表示されてすぐに終了します。この場合、スマートカードを接続するよう促す他のプロンプトは表示されません。

ただし、StoreFront側では、セッションに再接続するときにスマートカードが接続されていない場合、StoreFront Webに次のようなアラートが表示されることがあります。

スマートカードの挿入

制限事項

スマートカード取り外し設定

サインインしているユーザーのスマートカードがセッション中にスマートカードリーダーから取り外されたときの動作を指定するには、Linux VDAで次のレジストリキーを編集します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\LocalPolicies\SecurityOptions

値の名前 種類 デフォルト 説明
SCardRemoveOption REG_DWORD 0x00000000 サインインしているユーザーのスマートカードがセッション中にスマートカードリーダーから取り外されたときに何が起こるかを決定する設定です。オプションは次のとおりです。
0 アクションなし
1 強制ログオフ: スマートカードの取り外し時にユーザーが自動的にサインアウトされます。
2 セッション切断: スマートカードの取り外し時にユーザーをサインアウトせずにセッションが切断されます。ユーザーは後でスマートカードを再挿入してセッションに再接続できます。
3 ワークステーションロック: 仮想デスクトップがロックされます。ユーザーはその後、スマートカードを再挿入し、PINコードを入力して画面のロックを解除できます。
SCardRemoveActionDelaySeconds REG_DWORD 15 取り外しオプションが強制ログオフまたはセッション切断に設定されている場合、アクションが実行されるまでの遅延を数秒間指定できます。この設定により、スマートカードが取り外された後、ユーザーセッションにメッセージボックスが表示され、指定された秒数後にセッションが強制ログオフまたは切断されることを示します。その時間内にスマートカードを再挿入すると、セッションは中断されずに続行されます。

制限事項

Linux VDAは、一度に1つのスマートカードリーダーのみをサポートします。

その他のスマートカードとPKCS#11ライブラリのサポート

Citrixは汎用スマートカードリダイレクトソリューションを提供します。サポートリストにはOpenSCスマートカードのみが記載されていますが、他のスマートカードやPKCS#11ライブラリの使用を試すことができます。特定のスマートカードまたはPKCS#11ライブラリに切り替えるには、次の手順を実行します。

  1. すべてのopensc-pkcs11.soインスタンスをPKCS#11ライブラリに置き換えます。

  2. PKCS#11ライブラリのパスをレジストリに設定するには、次のコマンドを実行します。

    /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "PKCS11LibPath" -d "PATH"
    <!--NeedCopy-->
    

    ここで、PATH/usr/lib64/pkcs11/opensc-pkcs11.soのようなPKCS#11ライブラリを指します。

  3. クライアントで高速スマートカードログオンを無効にします。