スマートカード

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

前提条件

スマートカードパススルー認証の可用性は、以下の条件に左右されます。
  • お使いのLinux VDAは、以下のいずれかのディストリビューションにインストールされています。
    • RHEL 9.0
    • RHEL 8
    • RHEL 7/CentOS 7
    • ロッキー リナックス 9.0
    • ロッキー リナックス 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. 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> を実行します。

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

スマートカード認証はpam\_krb5モジュールに依存しますが、このモジュールはRHEL 8およびRocky Linux 8では非推奨です。マルチセッションOSモードで提供されるRHEL 8およびRocky Linux 8マシンでスマートカード認証を使用する場合は、以下の手順が必要です。シングルセッションOS (VDI) モードで提供されるRHEL 8およびRocky Linux 8マシンでのスマートカード認証については、以下の手順をスキップできます。
  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およびRocky Linux 8に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
結果は次のようになります。

(オプション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.0/8.x、ロッキーリナックス 9.0/8.6、RHEL 7/セントオーエス 7:
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
ウブントゥ 22.04、ウブントゥ 20.04、ウブントゥ 18.04、デビアン 11.3:
apt-get install -y libpcsclite1 libccid
スマートカードドライバーをインストールする
OpenSCは広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
RHEL 9.0/8.x、ロッキー リナックス 9.0/8.6、RHEL 7/セントオーエス 7:
yum install opensc
ウブントゥ 22.04、ウブントゥ 20.04、ウブントゥ 18.04、デビアン 11.3:
apt-get install -y opensc
スマートカード認証用のPAMモジュールをインストールする
pam\_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 7/CentOS 7:
yum install pam_krb5 krb5-pkinit
RHEL 9.0/8.x、Rocky Linux 9.0/8.6 の場合:
yum install krb5-pkinit
Ubuntu 22.04、Ubuntu 20.04、Ubuntu 18.04:
apt-get install libpam-krb5 krb5-pkinit
Debian 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情報
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アプリの次のバージョンで高速スマートカードをサポートしています。
  • シトリックス レシーバー Windows用 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シナリオでは、証明書を選択し、PINを入力してStoreFrontにログオンするよう求められます。
    StoreFrontにログオンするためにPINを入力する
StoreFrontでLinux仮想デスクトップセッションを起動すると、Linux VDAへのログオンダイアログボックスが次のように表示されます。ユーザー名はスマートカードの証明書から抽出され、ログオン認証のためにPINを再度入力する必要があります。
この動作はWindows VDAと同じです。
ログオン認証

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

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

制限事項

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

  • スマートカードパススルー認証は、制限付きのLinuxディストリビューションとAD統合方法をサポートしています。以下のマトリックスを参照してください。
    ウィンバインド SSSD セントリファイ
    デビアン 11.3 はい はい はい
    RHEL 9.0 はい はい いいえ
    RHEL 8.6、RHEL 8.4 はい はい はい
    RHEL 7.9 / CentOS 7.9 はい はい はい
    ロッキー リナックス 9.0 はい はい いいえ
    ロッキー リナックス 8 はい はい いいえ
    ウブントゥ 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. クライアントで高速スマートカードログオンを無効にします。