スマートカード

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

前提条件

スマートカードパススルー認証の可用性は、次の条件に依存します。
  • お使いのLinux VDAは、次のいずれかのディストリビューションにインストールされています。
    • RHEL 9.1/9.0
    • RHEL 8.7/8.6/8.4
    • RHEL 7、CentOS 7
    • ロッキー リナックス 9.1/9.0
    • ロッキー リナックス 8.7/8.6
    • ウブントゥ 22.04
    • ウブントゥ 20.04
    • ウブントゥ 18.04
    • デビアン 11.3
    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 スマートカードを使用します。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> を実行します。

RHEL 8.x および Rocky Linux 8.x で pam_krb5 モジュールをビルドする

スマートカード認証は pam\_krb5 モジュールに依存しますが、このモジュールは RHEL 8.x および Rocky Linux 8.x では非推奨です。マルチセッション OS モードで提供される RHEL 8.x および Rocky Linux 8.x マシンでスマートカード認証を使用する場合は、以下の手順が必要です。シングルセッション OS (VDI) モードで提供される RHEL 8.x および Rocky Linux 8.x マシンでのスマートカード認証の場合、以下の手順はスキップできます。
  1. <https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html> から pam_krb5-2.4.8-6 ソースコードをダウンロードします。
  2. RHEL 8.x および Rocky Linux 8.x に pam\_krb5 モジュールをビルドしてインストールします。
    yum install -y opensc pcsc-lite pcsc-lite-libs pcsc-lite-ccid nss-tools
    yum install gcc krb5-devel pam-devel autoconf libtool
    rpm2cpio pam_krb5-2.4.8-6.el7.src.rpm | cpio –div
    tar xvzf pam_krb5-2.4.8.tar.gz
    cd pam_krb5-2.4.8
    ./configure --prefix=/usr
    make
    make install
  3. /usr/lib64/security/ に pam_krb5.so が存在することを確認します。
    ls -l /usr/lib64/security | grep pam_krb5

スマートカード環境を構成する

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 スクリプトを実行してスマートカードを無効にすることもできます。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。
ctxsmartlogon.shスクリプトを実行し、「いいえ」を選択する(/en-us/linux-virtual-delivery-agent/2303/media/smart-card-logon-script2.png)

(オプション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.1/9.0/8.x、Rocky Linux 9.1/9.0/8.x、RHEL 7/CentOS 7:
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
Ubuntu 22.04、Ubuntu 20.04、Ubuntu 18.04、Debian 11.3:
apt-get install -y libpcsclite1 libccid
スマートカードドライバーをインストールする
OpenSCは広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
RHEL 9.1/9.0/8.x、Rocky リナックス 9.1/9.0/8.x、RHEL 7/CentOS 7:
yum install opensc
ウブントゥ 22.04、ウブントゥ 20.04、ウブントゥ 18.04、Debian 11.3:
apt-get install -y opensc
スマートカード認証用のPAMモジュールをインストールする
pam\_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 7/CentOS 7:
yum install pam_krb5 krb5-pkinit
RHEL 9.1/9.0/8.x、ロッキー・リナックス 9.1/9.0/8.x:
yum install krb5-pkinit
ウブントゥ 22.04、ウブントゥ 20.04、ウブントゥ 18.04:
apt-get install libpam-krb5 krb5-pkinit
デビアン 11.3:
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情報が追加されました(/en-us/linux-virtual-delivery-agent/2303/media/pkinit-information-new2.png)
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を使用する場合の変更された構成ファイル(/en-us/linux-virtual-delivery-agent/2303/media/smartcard-authentication-file.png)

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

シングルサインオン (SSO) は、仮想デスクトップおよびアプリケーションの起動時にパススルー認証を実装するCitrixの機能です。この機能により、ユーザーがPINを入力する回数が減ります。Linux VDAでSSOを使用するには、Citrix Workspaceアプリを構成します。構成はWindows VDAと同じです。詳細については、Knowledge Centerの記事CTX133982を参照してください。
Citrix Workspaceアプリでグループポリシーを構成する際に、スマートカード認証を次のように有効にします。
Workspaceアプリでスマートカード認証を有効にする(/en-us/linux-virtual-delivery-agent/2303/media/enable-smart-card-auth-in-receiver.jpg)

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

高速スマートカードは、既存の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パラメータを削除します。

XDPingを実行する

上記のステップを完了した後、Linux XDPingツールを使用して、Linux VDA環境に存在する可能性のある一般的な構成の問題を確認できます。詳細については、XDPingを参照してください。

使用方法

スマートカードを使用して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は次のようなアラートを表示する可能性があります。
スマートカードを挿入するイメージ(/en-us/linux-virtual-delivery-agent/2303/media/please-insert-smart-card.png)

制限事項

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

  • スマートカードパススルー認証は、制限されたLinuxディストリビューションとAD統合方法をサポートしています。次のマトリックスを参照してください。
    ウィンバインド SSSD セントリファイ
    デビアン 11.3 はい はい はい
    RHEL 9.1/9.0 はい はい いいえ
    RHEL 8.7/8.6/8.4 はい はい はい
    RHEL 7.9, CentOS 7.9 はい はい はい
    ロッキー Linux 9.1/9.0 はい はい いいえ
    ロッキー Linux 8.7/8.6 はい はい いいえ
    ウブントゥ 22.04/20.04/18.04 はい はい はい

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

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

他のスマートカードと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は、/usr/lib64/pkcs11/opensc-pkcs11.soのようなPKCS#11ライブラリを指します。
  3. クライアントで高速スマートカードログオンを無効にします。