スマートカード
-
Linux仮想デスクトップセッションにログオンする際、クライアントデバイスに接続されたスマートカードを認証に使用できます。この機能は、ICA®スマートカード仮想チャネルを介したスマートカードリダイレクトによって実装されます。セッション内でスマートカードを使用することもできます。使用例は次のとおりです。
- ドキュメントへのデジタル署名の追加
- メールの暗号化または復号化
- Webサイトへの認証
Linux VDAは、この機能に関してWindows VDAと同じ構成を使用します。詳細については、この記事の「スマートカード環境の構成」セクションを参照してください。
注:
Linux VDAセッション内でマップされたスマートカードを使用してCitrix Gatewayにサインオンすることはサポートされていません。
前提条件
スマートカードパススルー認証の可用性は、次の条件に依存します。
-
Linux VDAがDelivery Controller™に登録でき、Windows資格情報を使用して公開されたLinuxデスクトップセッションを開くことができること。
-
OpenSCでサポートされているスマートカードが使用されていること。詳細については、「OpenSCがスマートカードをサポートしていることを確認する」を参照してください。
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
<!--NeedCopy-->
構成
ルート証明書の準備
ルート証明書は、スマートカード上の証明書を検証するために使用されます。ルート証明書をダウンロードしてインストールするには、次の手順を実行します。
-
通常、CAサーバーからPEM形式のルート証明書を取得します。
次のコマンドと同様のコマンドを実行して、DERファイル(*.crt、*.cer、*.der)をPEMに変換できます。次のコマンド例では、certnew.cerがDERファイルです。
openssl x509 -inform der -in certnew.cer -out certnew.pem <!--NeedCopy--> -
ルート証明書を
opensslディレクトリにインストールします。certnew.pemファイルは例として使用されます。cp certnew.pem <path where you install the root certificate> <!--NeedCopy-->ルート証明書をインストールするためのパスを作成するには、
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サービスを再起動してください。 RHEL 8以降では、PAM_KRB5がEPELリポジトリに移動されたため、スクリプトはこれらのディストリビューションでEPELを有効にしようとします。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
結果は次のようになります。

注:
ドメイン参加方法としてQuestを使用する場合、Key Distribution Center(KDC)のホスト名を指定する必要があります。例:
ctxsmartlogon.shスクリプトを実行してスマートカードを無効にすることもできます。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
結果は次のようになります。

(オプション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.4/9.3/9.2/8.x、Rocky Linux 9.4/9.3/9.2/8.x:
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->
Ubuntu 22.04、Ubuntu 20.04、Debian 12.5、Debian 11.9:
apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
スマートカードドライバーのインストール
OpenSCは広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
RHEL 9.4/9.3/9.2/8.x、Rocky Linux 9.4/9.3/9.2/8.x:
yum install opensc
<!--NeedCopy-->
Ubuntu 22.04、Ubuntu 20.04、Debian 12.5、Debian 11.9:
apt-get install -y opensc
<!--NeedCopy-->
pam_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 9.4/9.3/9.2/8.x、Rocky Linux 9.4/9.3/9.2/8.x:
yum install krb5-pkinit
<!--NeedCopy-->
Ubuntu 22.04、Ubuntu 20.04:
apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->
Debian 12.5、Debian 11.9:
apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->
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
<!--NeedCopy-->
**/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
}
<!--NeedCopy-->
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を使用する場合、変更後の構成ファイルは次のようになります。

(オプション) スマートカードを使用したシングルサインオン
シングルサインオン (SSO) は、仮想デスクトップおよびアプリケーションの起動でパススルー認証を実装するCitrixの機能です。この機能により、ユーザーがPINを入力する回数が減ります。Linux VDAでSSOを使用するには、Citrix Workspaceアプリを構成します。構成はWindows VDAと同じです。詳しくは、Knowledge Centerの記事CTX133982を参照してください。
Citrix Workspace™アプリでグループポリシーを構成する際に、スマートカード認証を次のように有効にします。

高速スマートカードログオン
高速スマートカードは、既存のHDX PC/SCベースのスマートカードリダイレクトを改善したものです。これにより、スマートカードが高遅延WAN環境で使用される場合のパフォーマンスが向上します。詳しくは、「スマートカード」を参照してください。
Linux VDAは、Citrix Workspaceアプリの次のバージョンで高速スマートカードをサポートしています。
- Citrix Receiver for Windows 4.12
- Citrix Workspaceアプリ1808 for Windows以降
クライアントでの高速スマートカードログオンの有効化
高速スマートカードログオンは、VDAではデフォルトで有効になっており、クライアントではデフォルトで無効になっています。クライアントで高速スマートカードログオンを有効にするには、関連するStoreFrontサイトのdefault.icaファイルに次のパラメーターを含めます。
[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->
クライアントでの高速スマートカードログオンの無効化
クライアントで高速スマートカードログオンを無効にするには、関連するStoreFrontサイトのdefault.icaファイルから**SmartCardCryptographicRedirection**パラメーターを削除します。
XDPingの実行
前述の手順を完了した後、Linux XDPingツールを使用して、Linux VDA環境に存在する可能性のある一般的な構成の問題を確認できます。
使用方法
スマートカードを使用したLinux VDAへのログオン
スマートカードを使用して、SSOシナリオと非SSOシナリオの両方でLinux VDAにログオンできます。
- SSOシナリオでは、キャッシュされたスマートカード証明書とPINを使用してStoreFront™に自動的にログオンします。StoreFrontでLinux仮想デスクトップセッションを起動すると、PINがスマートカード認証のためにLinux VDAに渡されます。
-
非SSOシナリオでは、証明書を選択し、PINを入力してStoreFrontにログオンするよう求められます。

StoreFrontでLinux仮想デスクトップセッションを起動すると、Linux VDAへのログオンダイアログボックスが次のように表示されます。ユーザー名はスマートカード内の証明書から抽出され、ログオン認証のためにPINを再度入力する必要があります。
この動作はWindows VDAと同じです。

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

制限事項
制限されたLinuxディストリビューションとAD統合方法のサポート
-
スマートカードパススルー認証は、制限されたLinuxディストリビューションとAD統合方法をサポートしています。次のマトリックスを参照してください。
Winbind SSSD Centrify Quest Debian 12.5/11.9 はい はい はい いいえ RHEL 9.4/9.3/9.2 はい はい はい はい RHEL 8.10/8.9/8.8 はい はい はい はい Rocky Linux 9.4/9.3/9.2 はい はい はい いいえ Rocky Linux 8.10/8.9/8.8 はい はい はい いいえ Ubuntu 22.04/20.04 はい はい はい はい
スマートカード取り外し設定
Linux VDAで次のレジストリキーを編集することにより、サインインしているユーザーのスマートカードがセッション中にスマートカードリーダーから取り外された場合に何が起こるかを決定できます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\LocalPolicies\SecurityOptions
| 値の名前 | 種類 | デフォルト | 説明 |
|---|---|---|---|
| SCardRemoveOption | REG_DWORD | 0x00000000 | この設定は、サインインしているユーザーのスマートカードがセッション中にスマートカードリーダーから取り外された場合に何が起こるかを決定します。オプションは次のとおりです。 |
| 0 アクションなし | |||
| 1 強制ログオフ: スマートカードが取り外されると、ユーザーは自動的にサインアウトされます。 | |||
| 2 セッション切断: スマートカードが取り外されると、ユーザーをサインアウトせずにセッションが切断されます。ユーザーは後でスマートカードを再挿入してセッションに再接続できます。 | |||
| SCardRemoveActionDelaySeconds | REG_DWORD | 15 | 取り外しオプションが強制ログオフまたはセッション切断に設定されている場合、アクションが実行されるまでの遅延を数秒でさらに指定できます。この設定により、スマートカードが取り外された後、ユーザーセッションにメッセージボックスが表示され、指定された秒数後にセッションが強制ログオフ/切断されることを示します。その時間内にスマートカードを再挿入すると、セッションは中断されずに続行されます。 |
制限事項
Linux VDAは、一度に1つのスマートカードリーダーのみをサポートします。
その他のスマートカードとPKCS#11ライブラリのサポート
Citrix は汎用スマートカードリダイレクトソリューションを提供します。サポートリストには OpenSC スマートカードのみが記載されていますが、他のスマートカードや PKCS#11 ライブラリも試用できます。特定のスマートカードまたは PKCS#11 ライブラリに切り替えるには、次の手順を実行します。
-
opensc-pkcs11.soのすべてのインスタンスを PKCS#11 ライブラリに置き換えます。 -
PKCS#11 ライブラリのパスをレジストリに設定するには、次のコマンドを実行します。
/opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "PKCS11LibPath" -d "PATH" <!--NeedCopy-->ここで、PATH は
/usr/lib64/pkcs11/opensc-pkcs11.soのような PKCS#11 ライブラリを指します。 -
クライアントで高速スマートカードログオンを無効にします。
