スマートカードを使用したパススルー認証
ユーザーは、Linux仮想デスクトップセッションへのログオン時に、クライアントデバイスに接続されたスマートカードを認証に使用できます。この機能は、ICA®スマートカード仮想チャネルを介したスマートカードリダイレクトによって実装されます。ユーザーはセッション内でスマートカードを使用することもできます。ユースケースには、ドキュメントへのデジタル署名の追加、電子メールの暗号化または復号化、スマートカード認証を必要とするWebサイトへの認証などがあります。
Linux VDAは、この機能に関してWindows VDAと同じ構成を使用します。詳細については、この記事の「スマートカード環境の構成」セクションを参照してください。
注:
Linux VDAセッション内でマッピングされたスマートカードを使用してCitrix Gatewayにサインオンすることは、公式にはサポートされていません。
前提条件
- スマートカードパススルー認証の可用性は、以下の条件に依存します。
- Linux VDAが以下のいずれかのディストリビューションにインストールされていること:
- RHEL 8/CentOS 8
- RHEL 7/CentOS 7
- Ubuntu 20.04
- Ubuntu 18.04
- Ubuntu 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をサポートしています。

組織でより高度なスマートカードが必要な場合は、RHEL 7またはRHEL 8がインストールされ、OpenSCパッケージがインストールされた物理マシンを準備してください。OpenSCのインストールについては、「スマートカードドライバーのインストール」を参照してください。スマートカードを挿入し、次のコマンドを実行して、OpenSCがスマートカードをサポートしていることを確認します。
```
openssl x509 -inform der -in certnew.cer -out certnew.pem
<!--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>を実行します。
RHEL 8/CentOS 8でのpam_krb5モジュールのビルド
スマートカード認証はpam_krb5モジュールに依存しますが、これはRHEL 8/CentOS 8では非推奨です。RHEL 8/CentOS 8でスマートカード認証を使用するには、次のようにpam_krb5モジュールをビルドします。
-
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ソースコードをダウンロードします。
-
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 <!--NeedCopy--> -
/usr/lib64/security/の下にpam_krb5.soが存在することを確認します。
ls -l /usr/lib64/security | grep pam_krb5 <!--NeedCopy-->
スマートカード環境の構成
ctxsmartlogon.shスクリプトを使用してスマートカード環境を構成するか、手動で構成を完了することができます。
(オプション1)ctxsmartlogon.shスクリプトを使用したスマートカード環境の構成
注:
ctxsmartlogon.shスクリプトは、PKINIT情報をデフォルトレルムに追加します。この設定は、/etc/krb5.conf構成ファイルを通じて変更できます。
スマートカードを初めて使用する前に、ctxsmartlogon.shスクリプトを実行してスマートカード環境を構成します。
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
結果は次のようになります。

スマートカードを無効にするには:
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
結果は次のようになります。

(オプション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
<!--NeedCopy-->
スマートカードドライバーのインストール
OpenSCはRHELで広く使用されているスマートカードドライバーです。OpenSCがインストールされていない場合は、次のコマンドを実行してインストールします。
- yum install opensc
<!--NeedCopy-->
スマートカード認証用のPAMモジュールのインストール
pam_krb5およびkrb5-pkinitモジュールをインストールするには、次のコマンドを実行します。
RHEL 7/CentOS 7:
yum install pam_krb5 krb5-pkinit
<!--NeedCopy-->
- RHEL 8/CentOS 8:
yum install krb5-pkinit
<!--NeedCopy-->
Ubuntu 20.04、Ubuntu 18.04、Ubuntu 16.04:
apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->
pam_krb5モジュールは、PAM対応アプリケーションがパスワードを確認し、キー配布センター(KDC)からチケット保証チケットを取得するために使用できるプラガブル認証モジュールです。krb5-pkinitモジュールには、クライアントが秘密鍵と証明書を使用してKDCから初期資格情報を取得できるようにするPKINITプラグインが含まれています。
pam_krb5モジュールの設定
pam_krb5モジュールはKDCと連携し、スマートカード内の証明書を使用してKerberosチケットを取得します。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 パラメーターを削除します。
使用方法
スマートカードを使用した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 VDAはスマートカード取り外しに対してデフォルトの動作のみを使用します。Linux VDAに正常にログオンした後でスマートカードを取り外しても、セッションは接続されたままであり、セッション画面はロックされません。
その他のスマートカードとPKCS#11ライブラリのサポート
サポートリストにはOpenSCスマートカードのみが記載されていますが、Citrixは汎用スマートカードリダイレクトソリューションを提供しているため、他のスマートカードや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ライブラリを指します。 -
クライアントで高速スマートカードログオンを無効にします。