Linux Virtual Delivery Agent

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

Linux仮想デスクトップセッションにログオンするときに、クライアントデバイスに接続されたスマートカードを認証に使うことができます。この機能は、ICAスマートカード仮想チャネル上でのスマートカードのリダイレクトによって実装されます。セッション内でスマートカードを使用することもできます。使用例としては、ドキュメントにデジタル署名を追加する、電子メールを暗号化または復号化する、スマートカード認証が必要なWebサイトを認証するなどがあります。

Linux VDAは、この機能にWindows VDAと同じ構成を使用します。詳しくは、この記事の「スマートカード環境を構成する」セクションを参照してください。

スマートカードを使用したパススルー認証を行えるかどうかは、次の条件により異なります:

  • Linux VDAがRHEL 7.7にインストールされている。
  • CoolKeyがサポートするスマートカードが使用されている。
  • Windows向けCitrix Workspaceアプリが使用されている。

注:

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種類のスマートカードをサポートしています。しかし、公式にサポートされ検証されているカードの数はまだ限られています(「Smart Card Support in Red Hat Enterprise Linux」を参照してください)。

この記事では、構成を説明するための例として、YubiKey 4スマートカードを使用します。YubiKey 4は、Amazonや他の小売業者から簡単に購入できる一体型のUSB CCID PIVデバイスです。CoolKeyドライバーは、YubiKey 4をサポートしています。

yubikey4の画像

もっと高度なスマートカードが必要になった場合は、RHEL 7.7とCoolKeyパッケージがインストールされた物理マシンを準備します。CoolKeyのインストールについては、「スマートカードドライバーをインストールする」を参照してください。スマートカードを挿入し、次のコマンドを実行して、CoolKeyがスマートカードをサポートしていることを確認します:

pkcs11-tool --module libcoolkeypk11.so --list-slots
<!--NeedCopy-->

CoolKeyがスマートカードをサポートしている場合、コマンド出力は次のようになり、スロット情報が含まれています。

CoolKeyがスマートカードをサポートしている場合の出力

構成

ルート証明書を準備する

ルート証明書は、スマートカード内の証明書を検証するために使用されます。ルート証明書をダウンロードしてインストールするには、次の手順を実行します。

  1. 通常はCAサーバーから、ルート証明書をPEM形式で取得します。

    次のようなコマンドを実行して、DERファイル(*.crt、*.cer、*.der)をPEMに変換できます。次のコマンド例では、certnew.cer はDERファイルです。

    openssl x509 -inform der -in certnew.cer -out certnew.pem
    <!--NeedCopy-->
    
  2. ルート証明書をopensslディレクトリにインストールします。例として certnew.pem ファイルを使用しています。

    cp certnew.pem <path where you install the root certificate>
    <!--NeedCopy-->
    

    ルート証明書をインストールするためのパスを作成するには、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
    <!--NeedCopy-->
    
  2. 次のコマンドを実行して、ルート証明書がNSSデータベースに正常に追加されたことを確認します。

    certutil -L -d /etc/pki/nssdb
    <!--NeedCopy-->
    

    ルート証明書が正常に追加されている場合、コマンド出力は次のようになります。

    ルート証明書が正常に追加されている場合のコマンド出力

  3. CoolKeyがNSS PKCS#11ライブラリにインストールされているかどうかを確認します。

    modutil -list -dbdir /etc/pki/nssdb
    <!--NeedCopy-->
    

    CoolKeyモジュールがインストールされている場合、コマンド出力は次のようになります。

    Coolkeyモジュールがインストールされている場合のコマンド出力

    CoolKeyモジュールがインストールされていない場合は、次のコマンドを実行して手動でインストールし、再度インストールを確認してください。

    modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    

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

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

  • ctxsmartlogon.shスクリプトを使用してスマートカード環境を構成する

    注:

    ctxsmartlogon.shスクリプトは、PKINIT情報をデフォルトの領域に追加します。この設定は、/etc/krb5.conf構成ファイルを使用して変更できます。

    スマートカードを初めて使用する前に、ctxsmartlogon.shスクリプトを実行してスマートカード環境を構成します。

    ヒント:

    ドメインへの参加にSSSDを使用している場合は、ctxsmartlogon.shの実行後にSSSDサービスを再起動してください。

     sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
     <!--NeedCopy-->
    

    結果は次のようになります:

    ctxsmartlogon.shスクリプトを実行して、yesを選択

    ctxsmartlogon.shスクリプトを実行して、スマートカードを無効にすることもできます:

     sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
     <!--NeedCopy-->
    

    結果は次のようになります:

    ctxsmartlogon.shスクリプトを実行して、noを選択

  • スマートカード環境を手動で構成する

    Linux VDAは、Windows VDAと同じスマートカード環境を使用します。この環境では、ドメインコントローラー、Microsoft証明機関(CA)、インターネットインフォメーションサービス、Citrix StoreFront、Citrix Workspaceアプリなど、複数のコンポーネントを構成する必要があります。YubiKey 4スマートカードに基づく構成について詳しくは、Knowledge CenterのCTX206156の記事を参照してください。

    次の手順に進む前に、すべてのコンポーネントが正しく構成されていること、秘密キーとユーザー証明書がスマートカードにダウンロードされていること、スマートカードを使用してWindows VDAに正常にログオンできることを確認してください。

PC/SC Liteパッケージをインストールする

PCSC Liteは、Linuxでのパーソナルコンピューター/スマートカード(PC/SC)仕様の実装です。スマートカードやリーダーと通信するためのWindowsスマートカードインターフェイスを提供します。Linux VDAでのスマートカードリダイレクトは、PC/SCレベルで実装されています。

次のコマンドを実行して、PC/SC Liteパッケージをインストールします。

yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->

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

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

yum install coolkey
<!--NeedCopy-->

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

次のコマンドを実行して、pam_krb5およびkrb5-pkinitモジュールをインストールします。

yum install pam_krb5 krb5-pkinit
<!--NeedCopy-->

pam_krb5モジュールもプラグイン可能な認証モジュールであり、PAM対応アプリケーションがパスワードを確認したり、キー配布センター(KDC)のチケット配布チケットを取得したりするために、このモジュールを使用できます。krb5-pkinitモジュールにはPKINITプラグインが含まれていて、クライアントが秘密キーと証明書を使用してKDCから初期資格情報を取得できるようにします。

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情報を追加した後、次のようになります。

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アプリで高速スマートカードをサポートしています:

  • Citrix Receiver for Windows 4.12
  • Windows向けCitrix Workspaceアプリ1808以降

クライアントで高速スマートカードログオンを有効にする

高速スマートカードログオンは、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シナリオでは、StoreFrontにログオンするために証明書を選択してPINを入力するよう求められます。

    PINを入力してStoreFrontにログオンする

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

この動作はWindows VDAと同じです。

XenDesktopログインの画像

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

セッションに再接続するには、スマートカードがクライアントデバイスに接続されていることを確認します。スマートカードが接続されていないと再認証は失敗するため、Linux VDA側にグレーのキャッシュウィンドウが表示されてすぐに終了します。この場合、スマートカードの接続を促すメッセージは表示されません。

ただし、StoreFront側では、セッションに再接続しようとしたときにスマートカードが接続されていないと、StoreFront Webにより次のような通知が表示されることがあります。

スマートカードの挿入の画像

制限事項

スマートカード取り出し時の動作ポリシー

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

他のスマートカードおよびPKCS#11ライブラリのサポート

サポート一覧にCoolKeyスマートカードのみが表示されますが、Citrixは汎用スマートカードリダイレクトによる方法を提供しているため、他のスマートカードおよびPKCS#11ライブラリの使用を試すこともできます。特定のスマートカードまたはPKCS#11ライブラリに切り替えるには:

  1. PKCS#11ライブラリのすべてのlibcoolkeypk11.soインスタンスを置き換えます。

  2. PKCS#11ライブラリからレジストリへのパスを設定するには、次のコマンドを実行します:

    /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "PKCS11LibPath" -d "PATH"
    <!--NeedCopy-->
    

    PATHはPKCS#11ライブラリ(/usr/lib64/pkcs11/libcoolkeypk11.soなど)を参照します。

  3. クライアントで高速スマートカードログオンを無効にします。

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