スマートカード

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

前提条件

スマートカードパススルー認証の可用性は、以下の条件に依存します。
  • お使いのLinux VDAは、以下のいずれかのディストリビューションにインストールされています。
    • RHEL 8
    • ロッキー Linux 8
    • RHEL 7/CentOS 7
    • ウブントゥ 20.04
    • ウブントゥ 18.04
    • デビアン 10.9
    VDAのインストールが完了したら、VDAがDelivery Controller™に登録できること、およびWindows資格情報を使用して公開されたLinuxデスクトップセッションを開けることを確認してください。
  • OpenSCでサポートされているスマートカードが使用されます。詳細については、「OpenSCがスマートカードをサポートしていることを確認する」を参照してください。
  • Citrix Workspace™ app for Windowsが使用されます。

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

OpenSCは、RHEL 7.4以降で広く使用されているスマートカードドライバーです。CoolKeyと完全に互換性のある代替品として、OpenSCは多くの種類のスマートカードをサポートしています(Red Hat Enterprise Linuxでのスマートカードのサポートを参照)。
この記事では、YubiKey 4スマートカードを構成を説明するための例として使用します。YubiKey 4は、Amazonやその他の小売業者から簡単に購入できるオールインワンのUSB CCID PIVデバイスです。OpenSCドライバーはYubiKey 4をサポートしています。
ユービキー4
組織がより高度なスマートカードを必要とする場合は、サポートされているLinuxディストリビューションとOpenSCパッケージがインストールされた物理マシンを準備してください。OpenSCのインストールについては、スマートカードドライバーのインストールを参照してください。スマートカードを挿入し、OpenSCがスマートカードをサポートしていることを確認するために次のコマンドを実行します。
pkcs11-tool --module opensc-pkcs11.so --list-slots

構成

ルート証明書を準備する

ルート証明書は、スマートカード上の証明書を検証するために使用されます。ルート証明書をダウンロードしてインストールするには、次の手順を完了してください。
  1. PEM形式のルート証明書を、通常はCAサーバーから取得します。
    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サービスを再起動してください。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。
ctxsmartlogon.shスクリプトを実行し、「はい」を選択する(/en-us/linux-virtual-delivery-agent/2203-ltsr/media/smart-card-logon-script1.png)
ctxsmartlogon.shスクリプトを実行して、スマートカードを無効にすることもできます。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。
ctxsmartlogon.shスクリプトを実行し、「いいえ」を選択する(/en-us/linux-virtual-delivery-agent/2203-ltsr/media/smart-card-logon-script2.png)

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

Linux VDAは、Windows VDAと同じスマートカード環境を使用します。この環境では、ドメインコントローラー、Microsoft証明機関(CA)、インターネットインフォメーションサービス、Citrix StoreFront、Citrix Workspaceアプリなど、複数のコンポーネントを構成する必要があります。YubiKey 4スマートカードに基づいた構成については、Knowledge Centerの記事CTX206156を参照してください。
次のステップに進む前に、すべてのコンポーネントが正しく構成されていること、秘密鍵とユーザー証明書をスマートカードにダウンロードしていること、スマートカードを使用してWindows VDAに正常にログオンできることを確認してください。
PC/SC Liteパッケージをインストールする
PCSC Liteは、LinuxにおけるPersonal Computer/Smart Card(PC/SC)仕様の実装です。スマートカードおよびリーダーとの通信のためのWindowsスマートカードインターフェイスを提供します。Linux VDAにおけるスマートカードリダイレクトは、PC/SCレベルで実装されています。
PC/SC Liteパッケージをインストールするには、次のコマンドを実行します。
RHEL 7/CentOS 7、RHEL 8、およびRocky Linux 8:
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
Ubuntu 20.04、Ubuntu 18.04、Debian 10.9:
apt-get install -y libpcsclite1 libccid
スマートカードドライバーをインストールする
OpenSCは広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
RHEL 8、Rocky Linux 8、RHEL 7/CentOS 7:
yum install opensc
ウブントゥ 20.04、ウブントゥ 18.04、デビアン 10.9:
apt-get install -y opensc
スマートカード認証用のPAMモジュールをインストールする
次のコマンドを実行して、pam\_krb5およびkrb5-pkinitモジュールをインストールします。
RHEL 7/CentOS 7:
yum install pam_krb5 krb5-pkinit
RHEL 8およびRocky Linux 8:
yum install krb5-pkinit
ウブントゥ 20.04、ウブントゥ 18.04:
apt-get install libpam-krb5 krb5-pkinit
デビアン 10.9:
apt-get install -y libpam-krb5 krb5-pkinit
pam\_krb5モジュールは、PAM対応アプリケーションがパスワードをチェックし、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 アプリでスマートカード認証を有効にする

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

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

クライアントで高速スマートカードログオンを有効にする

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

クライアントで高速スマートカードログオンを無効にする

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

使用方法

スマートカードを使用してLinux VDAにログオンする

スマートカードを使用して、SSOおよび非SSOの両方のシナリオでLinux VDAにログオンできます。
  • SSOシナリオでは、キャッシュされたスマートカード証明書とPINを使用してStoreFront™に自動的にログオンします。StoreFrontでLinux仮想デスクトップセッションを起動すると、PINがスマートカード認証のためにLinux VDAに渡されます。
  • 非SSOシナリオでは、StoreFrontにログオンするために証明書を選択し、PINを入力するよう求められます。
    StoreFrontにログオンするためのPIN入力(/en-us/linux-virtual-delivery-agent/2203-ltsr/media/pin-new.png)
StoreFrontでLinux仮想デスクトップセッションを起動すると、Linux VDAへのログオンダイアログボックスが次のように表示されます。ユーザー名はスマートカードの証明書から抽出され、ログオン認証のためにPINを再度入力する必要があります。
この動作はWindows VDAと同じです。
ログオン認証(/en-us/linux-virtual-delivery-agent/2203-ltsr/media/logon-authentication.png)

スマートカードを使用してセッションに再接続する

セッションに再接続するには、スマートカードがクライアントデバイスに接続されていることを確認してください。そうしないと、スマートカードが接続されていないと再認証が失敗するため、Linux VDA側で灰色のキャッシュウィンドウが表示され、すぐに終了します。この場合、スマートカードを接続するよう促す他のプロンプトは表示されません。
ただし、StoreFront側で、セッションに再接続しようとしたときにスマートカードが接続されていない場合、StoreFront Webは次のようなアラートを表示する可能性があります。
スマートカードの挿入(/en-us/linux-virtual-delivery-agent/2203-ltsr/media/please-insert-smart-card.png)

制限事項

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

  • スマートカードパススルー認証は、限られたLinuxディストリビューションとAD統合方法をサポートしています。以下のマトリックスを参照してください。
    ウィンバインド SSSD セントリファイ クエスト
    RHEL 8 はい はい はい はい
    ロッキー Linux 8 はい はい いいえ いいえ
    RHEL 7, CentOS 7 はい はい はい はい
    ウブントゥ 22.04/18.04 はい はい はい はい
    デビアン 10.9 はい はい はい いいえ

スマートカード取り外しポリシー

Linux VDAは、スマートカードの取り外しに対してデフォルトの動作のみを使用します。Linux VDAに正常にログオンした後でスマートカードを取り外しても、セッションは接続されたままであり、セッション画面はロックされません。

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

サポートリストにはOpenSCスマートカードのみが記載されていますが、Citrixは汎用スマートカードリダイレクトソリューションを提供しているため、他のスマートカードや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は/usr/lib64/pkcs11/opensc-pkcs11.soのようなPKCS#11ライブラリを指します。
  3. クライアントで高速スマートカードログオンを無効にします。