スマートカード

最終公開日 : Nov 13, 2026
Linux仮想デスクトップセッションにログオンする際、クライアントデバイスに接続されたスマートカードを認証に使用できます。この機能は、ICA®スマートカード仮想チャネルを介したスマートカードリダイレクトによって実装されます。セッション内でスマートカードを使用することもできます。使用例は次のとおりです。
  • ドキュメントへのデジタル署名の追加
  • メールの暗号化または復号化
  • Webサイトへの認証
Linux VDAは、この機能に関してWindows VDAと同じ構成を使用します。詳しくは、この記事の「スマートカード環境の構成」セクションを参照してください。
注:
Linux VDAセッション内でマップされたスマートカードを使用してCitrix Gatewayにサインオンすることはサポートされていません。

一部のLinuxディストリビューションとAD統合方法のサポート

  • スマートカードパススルー認証は、一部のLinuxディストリビューションとAD統合方法をサポートしています。次のマトリックスを参照してください。
    ウィンバインド SSSD セントリファイ クエスト
    デビアン 12.15/11.11 はい はい はい はい
    RHEL 9.8/9.6/9.4 はい はい はい はい
    RHEL 8.10 はい はい はい はい
    ロッキー・リナックス 9.8/9.6/9.4 はい はい はい はい
    ロッキー・リナックス 8.10 はい はい はい はい
    ウブントゥ 24.04 はい はい はい はい
    ウブントゥ 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

構成

ルート証明書を準備する

ルート証明書は、スマートカード上の証明書を検証するために使用されます。ルート証明書をダウンロードしてインストールするには、次の手順を実行します。
  1. 通常、CAサーバーからPEM形式のルート証明書を取得します。
    次のようなコマンドを実行して、DERファイル(*.crt、*.cer、*.der)をPEMに変換できます。次のコマンド例では、certnew.cerはDERファイルです。
    openssl x509 -inform der -in certnew.cer -out certnew.pem
  2. ルート証明書をopensslディレクトリにインストールします。certnew.pemファイルは例として使用されます。
    cp certnew.pem <path where you install the root certificate>
    ルート証明書をインストールするためのパスを作成するには、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
結果は次のようになります。
注:
ドメイン参加方法としてQuestを使用する場合、Key Distribution Center (KDC) のホスト名を指定する必要があります。例:
](/en-us/linux-virtual-delivery-agent/2507-ltsr/media/kdc-host-name-being-required.png)
ctxsmartlogon.shスクリプトを実行してスマートカードを無効にすることもできます。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。

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

Linux VDAは、Windows VDAと同じスマートカード環境を使用します。この環境では、ドメインコントローラー、Microsoft証明機関 (CA)、インターネットインフォメーションサービス、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
ウブントゥ 24.04、ウブントゥ 22.04、デビアン 12.x、デビアン 11.11:
apt-get install -y libpcsclite1 libccid
スマートカードドライバーをインストールする
OpenSCは広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
RHEL 9.x/8.x、ロッキーリナックス 9.x/8.x:
yum install opensc
Ubuntu 24.04、Ubuntu 22.04、Debian 12.x、Debian 11.11 に対応しています:
apt-get install -y opensc
スマートカード認証用のPAMモジュールをインストールする
pam\_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 9.x/8.x、Rocky Linux 9.x/8.x の場合:
yum install krb5-pkinit
Ubuntu 24.04、Ubuntu 22.04 に対応しています:
apt-get install libpam-krb5 krb5-pkinit
Debian 12.x, Debian 11.11:
apt-get install -y libpam-krb5 krb5-pkinit
pam\_krb5モジュールは、プラガブル認証モジュールです。PAM対応アプリケーションは、pam\_krb5を使用してパスワードを確認し、Key Distribution Center (KDC) からチケット許可チケットを取得できます。krb5-pkinitモジュールには、クライアントが秘密鍵と証明書を使用してKDCから初期資格情報を取得できるようにするPKINITプラグインが含まれています。
pam\_krb5モジュールを構成する
pam\_krb5モジュールは、スマートカード内の証明書を使用してKerberosチケットを取得するためにKDCと対話します。PAMでpam_krb5認証を有効にするには、次のコマンドを実行します。
authconfig --enablekrb5 --update
/etc/krb5.conf 構成ファイルに、実際のレルムに従ってPKINIT情報を追加します。
注:
pkinit_cert_match オプションは、PKINIT認証を試行する前にクライアント証明書が一致する必要がある照合ルールを指定します。照合ルールの構文は次のとおりです。
コンポーネントルール …
ここで、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

 }
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アプリでスマートカード認証を有効にする

Fast smart cardログオン

Fast smart cardは、既存のHDX PC/SCベースのスマートカードリダイレクトを改善したものです。これにより、スマートカードが高遅延WAN環境で使用される場合のパフォーマンスが向上します。詳しくは、スマートカードを参照してください。
Linux VDAは、Citrix Workspaceアプリの次のバージョンでFast smart cardをサポートしています。
  • Windows 向け シトリックス レシーバー 4.12
  • Windows向けCitrix Workspaceアプリ1808以降

クライアントでFast smart cardログオンを有効にする

Fast smart cardログオンは、VDAではデフォルトで有効になっており、クライアントではデフォルトで無効になっています。クライアントでFast smart cardログオンを有効にするには、関連するStoreFrontサイトのdefault.icaファイルに次のパラメーターを含めます。
[WFClient]
SmartCardCryptographicRedirection=On

クライアントでFast smart cardログオンを無効にする

クライアントで高速スマートカードログオンを無効にするには、関連付けられている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にログオンするように求められます。
    PINを入力してStoreFrontにログオンする
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"
    ここで、PATHは、お使いのPKCS#11ライブラリ(例: /usr/lib64/pkcs11/opensc-pkcs11.so)を指します
  3. クライアントで高速スマートカードログオンを無効にします。