Linux Virtual Delivery Agent 2110

Prise en charge des cartes à puce

Vous pouvez utiliser une carte à puce connectée à la machine cliente pour vous authentifier lors de la connexion à une session de bureau virtuel Linux. Cette fonctionnalité est implémentée via la redirection de carte à puce sur le canal virtuel de la carte à puce ICA. Vous pouvez également utiliser la carte à puce dans la session. Les cas d’utilisation incluent l’ajout d’une signature numérique à un document, le cryptage ou le décryptage d’un e-mail et l’authentification sur un site Web nécessitant l’authentification par carte à puce.

L’agent Linux VDA utilise la même configuration que l’agent Windows VDA pour cette fonctionnalité. Pour plus d’informations, veuillez consulter la section Configurer l’environnement de carte à puce.

Remarque :

L’utilisation d’une carte à puce mappée dans une session Linux VDA pour se connecter à Citrix Gateway n’est pas officiellement prise en charge.

Conditions préalables

La disponibilité de l’authentification pass-through avec des cartes à puce dépend des conditions suivantes :

  • Votre Linux VDA est installé sur l’une des distributions suivantes :

    • RHEL 8/CentOS 8
    • RHEL 7/CentOS 7
    • Ubuntu 20.04
    • Ubuntu 18.04
    • Ubuntu 16.04
    • Debian 10.9

    Une fois l’installation du VDA terminée, vérifiez que votre VDA peut s’enregistrer auprès du Delivery Controller et que les sessions de bureau Linux publiées peuvent être lancées avec succès à l’aide des informations d’identification Windows.

  • Des cartes à puce prises en charge par OpenSC sont utilisées. Pour de plus amples informations, consultez la section S’assurer que OpenSC prend en charge votre carte à puce.

  • L’application Citrix Workspace pour Windows est utilisée.

S’assurer que OpenSC prend en charge votre carte à puce

OpenSC est un pilote de carte à puce largement utilisé sur RHEL 7.4+. Remplacement entièrement compatible de CoolKey, OpenSC prend en charge de nombreux types de cartes à puce (consultez la page Smart Card Support in Red Hat Enterprise Linux).

Dans cet article, la carte à puce YubiKey 4 est utilisée comme exemple pour illustrer la configuration. YubiKey 4 est un périphérique USB CCID PIV tout-en-un qui peut facilement être acheté auprès d’Amazon ou d’autres revendeurs. Le pilote OpenSC prend en charge YubiKey 4.

Yubikey4

Si votre organisation a besoin d’une autre carte à puce plus avancée, préparez une machine physique avec une distribution Linux prise en charge sur laquelle le package OpenSC est installé. Pour plus d’informations sur l’installation d’OpenSC, consultez la section Installer le pilote de la carte à puce. Insérez votre carte à puce et exécutez la commande suivante pour vérifier qu’OpenSC prend en charge votre carte à puce :

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

Configuration

Préparer un certificat racine

Un certificat racine est utilisé pour vérifier le certificat sur la carte à puce. Suivez les étapes suivantes pour télécharger et installer un certificat racine.

  1. Procurez-vous un certificat racine au format PEM, généralement auprès de votre serveur d’autorité de certification.

    Vous pouvez exécuter une commande similaire à la suivante pour convertir un fichier DER (*.crt, *.cer, *.der) en PEM. Dans l’exemple de commande suivant, certnew.cer est un fichier DER.

    openssl x509 -inform der -in certnew.cer -out certnew.pem
    <!--NeedCopy-->
    
  2. Installez le certificat racine dans le répertoire openssl. Le fichier certnew.pem est utilisé à titre d’exemple.

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

    Pour créer un chemin d’accès pour l’installation du certificat racine, exécutez sudo mdkir -p <path where you install the root certificate>.

Créer le module pam_krb5 sur RHEL 8/CentOS 8

L’authentification par carte à puce dépend du module pam_krb5, qui est obsolète sur RHEL 8/CentOS 8. Pour utiliser l’authentification par carte à puce sur RHEL 8/CentOS 8, créez le module pam_krb5 comme suit :

  1. Téléchargez le code source pam_krb5-2.4.8-6 à partir de https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html.

  2. Créez et installez le module pam_krb5 sur RHEL 8/CentOS 8.

    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-->
    
  3. Vérifiez que pam_krb5.so existe sous /usr/lib64/security/.

    ls -l /usr/lib64/security | grep pam_krb5
    <!--NeedCopy-->
    

Configurer l’environnement de la carte à puce

Vous pouvez utiliser le script ctxsmartlogon.sh pour configurer l’environnement de carte à puce ou effectuer la configuration manuellement.

(Option 1) Utiliser le script ctxsmartlogon.sh pour configurer l’environnement de carte à puce

Remarque :

Le script ctxsmartlogon.sh ajoute des informations PKINIT au domaine par défaut. Vous pouvez modifier ce paramètre via le fichier de configuration /etc/krb5.conf.

Avant d’utiliser les cartes à puce pour la première fois, exécutez le script ctxsmartlogon.sh pour configurer l’environnement de la carte à puce.

Conseil :

Si vous avez utilisé SSSD pour rejoindre un domaine, redémarrez le service SSSD après avoir exécuté ctxsmartlogon.sh.

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

Les résultats ressemblent à ce qui suit :

Exécuter le script ctxsmartlogon.sh et sélectionner l'option Oui

Vous pouvez également désactiver les cartes à puce en exécutant le script ctxsmartlogon.sh :

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

Les résultats ressemblent à ce qui suit :

Exécuter le script ctxsmartlogon.sh et sélectionner no

(Option 2) Configurer manuellement l’environnement de carte à puce

Le Linux VDA utilise le même environnement de carte à puce que le VDA Windows. Dans l’environnement, plusieurs composants doivent être configurés, notamment le contrôleur de domaine, l’autorité de certification Microsoft (CA), Internet Information Services, Citrix StoreFront et l’application Citrix Workspace. Pour plus d’informations sur la configuration basée sur la carte à puce YubiKey 4, consultez l’article CTX206156 du Centre de connaissances.

Avant de passer à l’étape suivante, vérifiez que tous les composants sont correctement configurés, que la clé privée et le certificat utilisateur sont téléchargés sur la carte à puce et que vous pouvez ouvrir une session sur le VDA Windows à l’aide de la carte à puce.

Installer les packages PC/SC Lite

PCSC Lite est une mise en œuvre de la spécification PC/SC (Personal Computer/Smart Card) sous Linux. Il fournit une interface de carte à puce Windows pour communiquer avec les cartes à puce et les lecteurs. La redirection de carte à puce dans le Linux VDA est implémentée au niveau PC/SC.

Exécutez la commande suivante pour installer les packages PC/SC Lite :

RHEL 7/CentOS 7, RHEL 8/CentOS 8 :

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

Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Debian 10.9 :

apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
Installer le pilote de la carte à puce

OpenSC est un pilote de carte à puce largement utilisé. Si CoolKey n’est pas installé, exécutez la commande suivante pour l’installer :

RHEL 7/CentOS 7, RHEL 8/CentOS 8 :

yum install opensc
<!--NeedCopy-->

Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Debian 10.9 :

apt-get install -y opensc
<!--NeedCopy-->
Installer les modules PAM pour l’authentification par carte à puce

Exécutez la commande suivante pour installer les modules pam_krb5 et 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-->

Debian 10.9 :

apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->

Le module pam_krb5 est un module d’authentification enfichable que les applications prenant en charge PAM peuvent utiliser pour vérifier les mots de passe et obtenir des tickets d’octroi de tickets depuis le centre de distribution de clés (KDC). Le module krb5-pkinit contient le plugin PKINIT qui permet aux clients d’obtenir les informations d’identification initiales depuis le KDC à l’aide d’une clé privée et d’un certificat.

Configurer le module pam_krb5

Le module pam_krb5 interagit avec le KDC pour obtenir des tickets Kerberos à l’aide des certificats de la carte à puce. Pour activer l’authentification pam_krb5 dans PAM, exécutez la commande suivante :

authconfig --enablekrb5 --update
<!--NeedCopy-->

Dans le fichier de configuration /etc/krb5.conf, ajoutez des informations PKINIT en fonction du domaine réel.

Remarque :

L’option pkinit_cert_match spécifie les règles de correspondance auxquelles le certificat client doit répondre avant qu’il ne soit utilisé pour tenter l’authentification PKINIT. La syntaxe des règles de correspondance est :

[relation-operator] component-rule…

relation-operator peut être &&, ce qui signifie que toutes les règles du composant doivent correspondre, ou ||, ce qui signifie qu’une seule règle doit correspondre.

Voici un exemple de fichier krb5.conf générique :

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-->

Le fichier de configuration ressemble à ce qui suit une fois que vous avez ajouté les informations PKINIT.

Informations sur PKINIT ajoutées

Configurer l’authentification PAM

Les fichiers de configuration PAM indiquent les modules qui sont utilisés pour l’authentification PAM. Pour ajouter pam_krb5 en tant que module d’authentification, ajoutez la ligne suivante au fichier /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

Le fichier de configuration ressemble à ce qui suit après les modifications si SSSD est utilisé.

Fichier de configuration modifié si SSSD est utilisé

(Facultatif) Single Sign-On avec cartes à puce

Citrix Single Sign-On (SSO) est une fonctionnalité qui implémente l’authentification unique lors du lancement de bureaux virtuels et d’applications. Cette fonctionnalité réduit le nombre de fois que les utilisateurs entrent leur code PIN. Pour utiliser l’authentification SSO avec le Linux VDA, configurez l’application Citrix Workspace. La configuration est la même avec le VDA Windows. Pour plus d’informations, consultez l’article CTX133982 du centre de connaissances.

Activez l’authentification par carte à puce comme suit lors de la configuration de la stratégie de groupe dans l’application Citrix Workspace.

Activation de l'authentification par carte à puce dans l'application Workspace

Connexion par carte à puce rapide

La carte à puce rapide constitue une amélioration par rapport à la redirection de carte à puce PC/SC HDX existante. Elle améliore les performances lorsque les cartes à puce sont utilisées dans des environnements WAN à latence élevée. Pour plus d’informations, veuillez consulter la section Cartes à puce.

Le Linux VDA prend en charge les cartes à puce rapides sur les versions suivantes de l’application Citrix Workspace :

  • Citrix Receiver pour Windows 4.12
  • Application Citrix Workspace 1808 pour Windows et versions ultérieures

Activer une connexion par carte à puce rapide sur le client

La connexion par carte à puce rapide est activée par défaut sur le VDA et désactivée par défaut sur le client. Sur le client, pour activer la connexion par carte à puce rapide, incluez le paramètre suivant dans le fichier default.ica du site StoreFront associé :

[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->

Désactiver une connexion par carte à puce rapide sur le client

Pour désactiver la connexion par carte à puce rapide sur le client, supprimez le paramètre SmartCardCryptographicRedirection dans le fichier default.ica du site StoreFront associé.

Utilisation

Se connecter au Linux VDA en utilisant une carte à puce

Vous pouvez utiliser une carte à puce pour vous connecter au Linux VDA dans les scénarios SSO et non SSO.

  • Dans le scénario SSO, vous êtes automatiquement connecté à StoreFront avec le certificat et le code PIN de la carte à puce mis en cache. Lorsque vous lancez une session de bureau virtuel Linux dans StoreFront, le code PIN est transmis au Linux VDA pour l’authentification par carte à puce.
  • Dans le scénario non SSO, vous êtes invités à sélectionner un certificat et à entrer un code PIN pour vous connecter à StoreFront.

    Saisie d'un code PIN pour se connecter à StoreFront

Lorsque vous lancez une session de bureau virtuel Linux dans StoreFront, une boîte de dialogue de connexion au Linux VDA apparaît comme suit. Le nom d’utilisateur est extrait du certificat dans la carte à puce et vous devez le saisir de nouveau pour l’authentification de connexion.

Le comportement est le même avec le VDA Windows.

Authentification d'ouverture de session

Se reconnecter à une session en utilisant une carte à puce

Pour vous reconnecter à une session, assurez-vous que la carte à puce est connectée à la machine cliente. Sinon, une fenêtre de mise en cache grise apparaît du côté du Linux VDA et se ferme rapidement car la ré-authentification échoue si la carte à puce n’est pas connectée. Aucune autre invite ne s’affiche dans ce cas pour vous rappeler de connecter la carte à puce.

Du côté de StoreFront, cependant, si une carte à puce n’est pas connectée lorsque vous essayez de vous reconnecter à une session, le site Web StoreFront peut afficher une alerte comme suit.

Image de l'insertion d'une carte à puce

Limitation

Stratégie de retrait de carte à puce

Actuellement, le Linux VDA utilise uniquement le comportement par défaut pour le retrait de la carte à puce. Lorsque vous retirez la carte à puce après vous être connecté au Linux VDA, la session reste connectée et l’écran de session n’est pas verrouillé.

Prise en charge des autres cartes à puce et de la bibliothèque PKCS#11

Bien que seule la carte à puce OpenSC soit répertoriée dans notre liste de prise en charge, vous pouvez essayer d’utiliser d’autres cartes à puce et la bibliothèque PKCS #11 car Citrix fournit une solution générique de redirection de carte à puce. Pour passer à votre carte à puce spécifique ou à la bibliothèque PKCS#11 :

  1. Remplacez toutes les instances opensc-pkcs11.so par votre bibliothèque PKCS#11.

  2. Pour définir le chemin d’accès de votre bibliothèque PKCS#11 sur le Registre, exécutez la commande suivante :

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

    PATH pointe vers votre bibliothèque PKCS #11 telle que /usr/lib64/pkcs11/opensc-pkcs11.so

  3. Désactivez la connexion par carte à puce rapide sur le client.

Prise en charge des cartes à puce