スマートカードを使用したパススルー認証

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

前提条件

スマートカードパススルー認証の可用性は、以下の条件に依存します。
  • Linux VDAが以下のいずれかのディストリビューションにインストールされていること:
    • RHEL 8/CentOS 8
    • RHEL 7/CentOS 7
    • ウブントゥ 20.04
    • ウブントゥ 18.04
    • ウブントゥ 16.04
    VDAのインストールが完了したら、VDAがDelivery Controller™に登録でき、公開されたLinuxデスクトップセッションがWindows資格情報を使用して正常に起動できることを確認します。
  • OpenSCでサポートされているスマートカードが使用されていること。詳しくは、「OpenSCがスマートカードをサポートしていることを確認する」を参照してください。
  • Citrix Workspace™アプリ 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
組織でより高度なスマートカードが必要な場合は、RHEL 7 または RHEL 8 と OpenSC パッケージがインストールされた物理マシンを準備してください。OpenSC のインストールについては、「スマートカードドライバーのインストール」(/ja-jp/linux-virtual-delivery-agent/2104/configuration/pass-through-authentication-with-smart-cards-.html#install-the-smart-card-driver) を参照してください。スマートカードを挿入し、次のコマンドを実行して、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/CentOS 8 で pam_krb5 モジュールをビルドする

スマートカード認証は pam\_krb5 モジュールに依存しますが、これは RHEL 8/CentOS 8 では非推奨です。RHEL 8/CentOS 8 でスマートカード認証を使用するには、次のように pam\_krb5 モジュールをビルドします。
  1. pam_krb5-2.4.8-6 のソースコードを <https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html> からダウンロードします。
  2. RHEL 8/CentOS 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. pam_krb5.so が /usr/lib64/security/ に存在することを確認します。
    ls -l /usr/lib64/security | grep pam_krb5

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

ctxsmartlogon.sh スクリプトを使用してスマートカード環境を構成するか、手動で構成を完了できます。

(オプション 1) ctxsmartlogon.sh スクリプトを使用してスマートカード環境を構成する

注:
ctxsmartlogon.sh スクリプトは、PKINIT 情報をデフォルトのレルムに追加します。この設定は、/etc/krb5.conf 構成ファイルを通じて変更できます。
スマートカードを初めて使用する前に、ctxsmartlogon.sh スクリプトを実行してスマートカード環境を構成してください。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。
ctxsmartlogon.sh スクリプトを実行して有効にする
スマートカードを無効にするには:
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
結果は次のようになります。
ctxsmartlogon.sh スクリプトを実行して無効にする

(オプション 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パッケージをインストールするには、次のコマンドを実行します。
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
スマートカードドライバーをインストールする
OpenSCは、RHELで広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
yum install opensc
スマートカード認証用のPAMモジュールをインストールする
pam\_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 7/CentOS 7:
yum install pam_krb5 krb5-pkinit
RHEL 8/CentOS 8:
yum install krb5-pkinit
ウブントゥ 20.04、ウブントゥ 18.04、ウブントゥ 16.04:
apt-get install libpam-krb5 krb5-pkinit
pam\_krb5モジュールは、PAM対応アプリケーションがパスワードをチェックし、Key Distribution Center (KDC) からチケット保証チケットを取得するために使用できるプラガブル認証モジュールです。krb5-pkinitモジュールには、クライアントが秘密鍵と証明書を使用してKDCから初期資格情報を取得できるようにするPKINITプラグインが含まれています。
pam\_krb5モジュールを構成する
pam\_krb5モジュールは、KDCと連携してスマートカード内の証明書を使用してKerberosチケットを取得します。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は次のようなアラートを表示する場合があります。
スマートカードを挿入するイメージ(/en-us/linux-virtual-delivery-agent/2104/media/please-insert-smart-card.png)

制限事項

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

現在、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. クライアントで高速スマートカードログオンを無効にします。