スマートカードのサポート

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

RHEL 7.7にLinux VDAソフトウェアをインストールする

RPMパッケージマネージャーまたは簡易インストールを使用してLinux VDAソフトウェアをインストールします。「インストール概要」セクションを参照してください。
VDAのインストールが完了したら、VDAがDelivery Controller™に登録でき、公開されたLinuxデスクトップセッションがパスワード認証を使用して正常に起動できることを確認します。

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

CoolKeyは、RHELで広く使用されているスマートカードドライバーです。CoolKeyは、CoolKeyカード、CAC、PIV、PKCS#15の4種類のスマートカードをサポートしています。ただし、正式にサポートおよび検証されているカードの数はまだ限られています(Red Hat Enterprise Linuxでのスマートカードのサポートを参照)。
この記事では、構成を説明するための例としてYubiKey 4スマートカードを使用します。YubiKey 4は、Amazonやその他の小売業者から簡単に購入できるオールインワンのUSB CCID PIVデバイスです。CoolKeyドライバーはYubiKey 4をサポートしています。
yubikey4の画像
組織でさらに高度なスマートカードが必要な場合は、RHEL 7.7とCoolKeyパッケージがインストールされた物理マシンを準備します。CoolKeyのインストールについては、「スマートカードドライバーのインストール」(/ja-jp/linux-virtual-delivery-agent/1912-ltsr/configuration/support-for-smart-cards.html#install-the-smart-card-driver)を参照してください。スマートカードを挿入し、CoolKeyがスマートカードをサポートしていることを確認するために、次のコマンドを実行します。
pkcs11-tool --module libcoolkeypk11.so --list-slots
CoolKeyがスマートカードをサポートしている場合、コマンド出力は、スロット情報が含まれる次の例のようになります。
CoolKeyがスマートカードをサポートしている場合の出力s

構成

ルート証明書を準備する

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

NSSデータベースを構成する

Linux VDAログオンモジュールは、スマートカードと証明書にアクセスするためにNSSデータベースに依存しています。NSSデータベースを構成するには、次の手順を実行します。
  1. 前述のルート証明書をNSSデータベースに追加します。
    certutil -A -n "My Corp Root" -t "CT,C,C" -a -d /etc/pki/nssdb -i  /etc/pki/CA/certs/certnew.pem
  2. ルート証明書がNSSデータベースに正常に追加されたことを確認するために、次のコマンドを実行します。
    certutil -L -d /etc/pki/nssdb
    ルート証明書が正常に追加された場合、コマンド出力は次の例のようになります。
    ルート証明書が正常に追加された場合のコマンド出力
  3. NSS PKCS#11ライブラリにCoolKeyがインストールされているか確認します。
    modutil -list -dbdir /etc/pki/nssdb
    CoolKeyモジュールがインストールされている場合、コマンド出力は次のようになります。
    Coolkeyモジュールがインストールされている場合のコマンド出力(/en-us/linux-virtual-delivery-agent/1912-ltsr/media/coolkeyinstalled.png)
    CoolKeyモジュールがインストールされていない場合は、次のコマンドを実行してモジュールを手動でインストールし、再度インストールを確認します。
    modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb
  4. pam_pkcs11モジュールを構成します。
    pam_pkcs11モジュールは、ユーザー証明書を検証するためにローカルVDA構成に依存します。pam_pkcs11で使用されるデフォルトのルート証明書は、**/etc/pam_pkcs11/cacerts/**にあります。このパス内の各ルート証明書にはハッシュリンクがあります。準備されたルート証明書をインストールし、pam_pkcs11を構成するには、次のコマンドを実行します。
    yum install pam_pkcs11

    mkdir /etc/pam_pkcs11/cacerts/

    cp certnew.pem /etc/pam_pkcs11/cacerts/

    cacertdir_rehash /etc/pam_pkcs11/cacerts

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

ctxsmartlogon.shスクリプトを使用してスマートカード環境を構成するか、手動で構成することができます。
  • 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/1912-ltsr/media/smart-card-logon-script1.png)
    ctxsmartlogon.shスクリプトを実行してスマートカードを無効にすることもできます。
    sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
    結果は次のようになります。
  • スマートカード環境を手動で構成する
    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パッケージをインストールするには、次のコマンドを実行します。
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs

スマートカードドライバーをインストールする

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

スマートカード認証用のPAMモジュールをインストールする

pam\_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
yum install pam_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] 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

 }
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:/usr/lib64/pkcs11/libcoolkeypk11.so
SSSDを使用する場合、変更後の構成ファイルは次のようになります。
SSSDを使用する場合の変更された構成ファイルの画像
Winbindを使用する場合、変更後の構成ファイルは次のようになります。
Winbindを使用する場合の変更された構成ファイルの画像
Centrifyを使用する場合、変更後の構成ファイルは次のようになります。
Centrifyを使用する場合の変更された構成ファイルの画像

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

シングルサインオン (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を入力する(/en-us/linux-virtual-delivery-agent/1912-ltsr/media/pin-new.png)
StoreFrontでLinux仮想デスクトップセッションを起動すると、Linux VDAへのログオンダイアログボックスが次のように表示されます。ユーザー名はスマートカードの証明書から抽出され、ログオン認証のためにPINを再度入力する必要があります。
この動作はWindows VDAと同じです。
XenDesktopログオンの画像(/en-us/linux-virtual-delivery-agent/1912-ltsr/media/xendesktop-login.png)

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

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

制限事項

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

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

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

サポートリストにはCoolKeyスマートカードのみが記載されていますが、Citrixは汎用スマートカードリダイレクトソリューションを提供しているため、他のスマートカードやPKCS#11ライブラリを試すことができます。特定のスマートカードまたはPKCS#11ライブラリに切り替えるには:
  1. すべてのlibcoolkeypk11.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/libcoolkeypk11.soのようなPKCS#11ライブラリを指します。
  3. クライアントで高速スマートカードログオンを無効にします。