Cartes à puce
-
Vous pouvez utiliser une carte à puce connectée au périphérique client pour l’authentification 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 carte à puce ICA®. Vous pouvez également utiliser la carte à puce au sein de la session. Les cas d’utilisation incluent :
- Ajout d’une signature numérique à un document
- Chiffrement ou déchiffrement d’un e-mail
- Authentification à un site Web
Le VDA Linux utilise la même configuration que le VDA Windows pour cette fonctionnalité. Pour plus d’informations, consultez la section Configurer l’environnement de carte à puce de cet article.
Remarque :
L’utilisation d’une carte à puce mappée au sein d’une session VDA Linux pour se connecter à Citrix Gateway n’est pas prise en charge.
Conditions préalables
La disponibilité de l’authentification par carte à puce est subordonnée aux conditions suivantes :
-
Votre VDA Linux peut s’enregistrer auprès du Delivery Controller™ et vous pouvez ouvrir les sessions de bureau Linux publiées à l’aide des informations d’identification Windows.
-
Les cartes à puce prises en charge par OpenSC sont utilisées. Pour plus d’informations, consultez Vérifier qu’OpenSC prend en charge votre carte à puce.
Vérifier qu’OpenSC prend en charge votre carte à puce
OpenSC est un pilote de carte à puce largement utilisé sur RHEL 7.4+. En tant que remplacement entièrement compatible de CoolKey, OpenSC prend en charge de nombreux types de cartes à puce (voir Smart Card Support in Red Hat Enterprise Linux).
Dans cet article, la carte à puce YubiKey est utilisée comme exemple pour illustrer la configuration. YubiKey est un périphérique USB CCID PIV tout-en-un qui peut être facilement acheté sur Amazon ou auprès d’autres détaillants. Le pilote OpenSC prend en charge YubiKey.
Si votre organisation nécessite une autre carte à puce plus avancée, préparez une machine physique avec une distribution Linux prise en charge et le package OpenSC installé. Pour plus d’informations sur l’installation d’OpenSC, consultez Installer le pilote de 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 ci-dessous pour télécharger et installer un certificat racine.
-
Obtenez un certificat racine au format PEM, généralement à partir de votre serveur CA.
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--> -
Installez le certificat racine dans le répertoire
openssl. Le fichier certnew.pem est utilisé comme exemple.cp certnew.pem <path where you install the root certificate> <!--NeedCopy-->Pour créer un chemin d’installation du certificat racine, exécutez
sudo mdkir -p <chemin où vous installez le certificat racine>.
Configurer l’environnement de 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 des cartes à puce pour la première fois, exécutez le script ctxsmartlogon.sh pour configurer l’environnement de carte à puce.
Conseil :
Si vous avez utilisé SSSD pour la jonction de domaine, redémarrez le service SSSD après avoir exécuté ctxsmartlogon.sh. Pour RHEL 8 et versions ultérieures, comme PAM_KRB5 est déplacé vers le référentiel EPEL, le script tentera d’activer EPEL dans ces distributions.
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
Les résultats ressemblent à ce qui suit :

Remarque :
Si vous utilisez Quest comme méthode de jonction de domaine, vous devez spécifier le nom d’hôte du Key Distribution Center (KDC). Par exemple :
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 :

(Option 2) Configurer l’environnement de carte à puce manuellement
Le VDA Linux utilise le même environnement de carte à puce que le VDA Windows. Dans cet environnement, plusieurs composants doivent être configurés, notamment le contrôleur de domaine, l’autorité de certification (CA) Microsoft, les services Internet (IIS), Citrix StoreFront et l’application Citrix Workspace. Pour plus d’informations sur la configuration basée sur la carte à puce YubiKey, consultez l’article du centre de connaissances CTX206156.
Avant de passer à l’étape suivante, assurez-vous que :
- Vous avez configuré tous les composants correctement.
- Vous avez téléchargé la clé privée et le certificat utilisateur sur la carte à puce.
- Vous pouvez vous connecter avec succès au VDA à l’aide de la carte à puce.
Installer les packages PC/SC Lite
PCSC Lite est une implémentation de la spécification Personal Computer/Smart Card (PC/SC) sous Linux. Il fournit une interface de carte à puce Windows pour la communication avec les cartes à puce et les lecteurs. La redirection de carte à puce dans le VDA Linux est implémentée au niveau PC/SC.
Exécutez la commande suivante pour installer les packages PC/SC Lite :
RHEL 9.4/9.2/8.x, Rocky Linux 9.4/9.2/8.x :
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04, Debian 12.7, Debian 12.5, Debian 11.11 :
apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
Installer le pilote de carte à puce
OpenSC est un pilote de carte à puce largement utilisé. Si OpenSC n’est pas installé, exécutez la commande suivante pour l’installer :
RHEL 9.4/9.2/8.x, Rocky Linux 9.4/9.2/8.x :
yum install opensc
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04, Debian 12.7, Debian 12.5, Debian 11.11 :
apt-get install -y opensc
<!--NeedCopy-->
Exécutez la commande suivante pour installer les modules pam_krb5 et krb5-pkinit.
RHEL 9.4/9.2/8.x, Rocky Linux 9.4/9.2/8.x :
yum install krb5-pkinit
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 :
apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->
Debian 12.7, Debian 12.5, Debian 11.11 :
apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->
Le module pam_krb5 est un module d’authentification enfichable. Les applications compatibles PAM peuvent utiliser pam_krb5 pour vérifier les mots de passe et obtenir des tickets d’octroi de tickets auprès du centre de distribution de clés (KDC). Le module krb5-pkinit contient le plug-in PKINIT qui permet aux clients d’obtenir des informations d’identification initiales du 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 de 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 les informations PKINIT en fonction du domaine réel.
Remarque :
L’option pkinit_cert_match spécifie les règles de correspondance que le certificat client doit respecter avant d’être utilisé pour tenter l’authentification PKINIT. La syntaxe des règles de correspondance est la suivante :
[opérateur-de-relation] règle-de-composant …
où opérateur-de-relation peut être soit &&, ce qui signifie que toutes les règles de composant doivent correspondre, soit **
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 après l’ajout des informations PKINIT.

Configurer l’authentification PAM
Les fichiers de configuration PAM indiquent les modules 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 modification si SSSD est utilisé.

(Facultatif) Authentification unique à l’aide de cartes à puce
L’authentification unique (SSO) est une fonctionnalité Citrix qui implémente l’authentification pass-through avec les lancements de bureaux virtuels et d’applications. Cette fonctionnalité réduit le nombre de fois où les utilisateurs saisissent leur code PIN. Pour utiliser l’authentification unique avec le VDA Linux, configurez l’application Citrix Workspace. La configuration est la même qu’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™.

Ouverture de session rapide par carte à puce
La carte à puce rapide est une amélioration par rapport à la redirection de carte à puce HDX PC/SC existante. Elle améliore les performances lorsque les cartes à puce sont utilisées dans des environnements WAN à latence élevée. Pour plus d’informations, consultez Cartes à puce.
Le VDA Linux prend en charge la carte à puce rapide 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 l’ouverture de session par carte à puce rapide sur le client
L’ouverture de session 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 l’ouverture de session par carte à puce rapide, incluez le paramètre suivant dans le fichier default.ica du site StoreFront associé :
[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->
Désactiver l’ouverture de session par carte à puce rapide sur le client
Pour désactiver l’ouverture de session par carte à puce rapide sur le client, supprimez le paramètre SmartCardCryptographicRedirection du fichier default.ica du site StoreFront associé.
Exécuter XDPing
Après avoir terminé les étapes précédentes, vous pouvez utiliser l’outil Linux XDPing pour vérifier les problèmes de configuration courants qui pourraient exister dans votre environnement VDA Linux.
Utilisation
Ouvrir une session sur le VDA Linux à l’aide d’une carte à puce
Vous pouvez utiliser une carte à puce pour ouvrir une session sur le VDA Linux dans les scénarios SSO et non-SSO.
- Dans le scénario SSO, vous êtes automatiquement connecté à StoreFront™ à l’aide du certificat de carte à puce et du code PIN mis en cache. Lorsque vous lancez une session de bureau virtuel Linux dans StoreFront, le code PIN est transmis au VDA Linux pour l’authentification par carte à puce.
- Dans le scénario non-SSO, vous êtes invité à sélectionner un certificat et à saisir un code PIN pour vous connecter à StoreFront.

Lorsque vous lancez une session de bureau virtuel Linux dans StoreFront, une boîte de dialogue d’ouverture de session sur le VDA Linux s’affiche comme suit. Le nom d’utilisateur est extrait du certificat de la carte à puce et vous devez saisir à nouveau le code PIN pour l’authentification de l’ouverture de session.
Ce comportement est identique à celui du VDA Windows.

Se reconnecter à une session à l’aide d’une carte à puce
Pour vous reconnecter à une session, assurez-vous que la carte à puce est connectée au périphérique client. Dans le cas contraire, une fenêtre de mise en cache grise apparaît côté VDA Linux et se ferme rapidement car la réauthentification échoue sans la carte à puce connectée. Aucune autre invite n’est fournie dans ce cas pour vous rappeler de connecter la carte à puce.
Côté StoreFront, cependant, si une carte à puce n’est pas connectée lorsque vous vous reconnectez à une session, le site web StoreFront peut afficher une alerte comme suit :

Limitation
Prise en charge limitée des distributions Linux et des méthodes d’intégration AD
-
L’authentification par carte à puce pass-through prend en charge un nombre limité de distributions Linux et de méthodes d’intégration AD. Consultez la matrice suivante :
Winbind SSSD Centrify Quest Debian 12.7/12.5/11.11 Oui Oui Oui Non RHEL 9.4/9.2 Oui Oui Non Oui RHEL 8.10/8.8 Oui Oui Oui Oui Rocky Linux 9.4/9.2 Oui Oui Non Non Rocky Linux 8.10/8.8 Oui Oui Non Non Ubuntu 24.04 Oui Oui Non Non Ubuntu 22.04/20.04 Oui Oui Oui Oui
Paramètres de retrait de la carte à puce
Pour spécifier le comportement lorsque la carte à puce d’un utilisateur connecté est retirée du lecteur de carte à puce pendant une session, modifiez la clé de registre suivante sur le VDA Linux :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\LocalPolicies\SecurityOptions
| Nom de la valeur | Type | Par défaut | Description |
|---|---|---|---|
| SCardRemoveOption | REG_DWORD | 0x00000000 | Ce paramètre détermine ce qui se passe lorsque la carte à puce d’un utilisateur connecté est retirée du lecteur de carte à puce pendant une session. Les options sont les suivantes |
| 0 Aucune action | |||
| 1 Forcer la fermeture de session : L’utilisateur est automatiquement déconnecté lors du retrait de la carte à puce. | |||
| 2 Déconnecter la session : La session est déconnectée sans déconnecter l’utilisateur lors du retrait de la carte à puce. L’utilisateur peut réinsérer la carte à puce pour se reconnecter à la session ultérieurement. | |||
| SCardRemoveActionDelaySeconds | REG_DWORD | 15 | Si l’option de retrait est définie sur Forcer la fermeture de session ou Déconnecter la session, vous pouvez spécifier un délai de plusieurs secondes avant que l’action ne soit effectuée. Avec ce paramètre, une boîte de message apparaît dans la session utilisateur après le retrait de la carte à puce, indiquant que la session sera fermée de force ou déconnectée après le nombre de secondes spécifié. Si vous réinsérez la carte à puce avant ce délai, la session se poursuit sans interruption. |
Limitations
Le VDA Linux ne prend en charge qu’un seul lecteur de carte à puce à la fois.
Prise en charge d’autres cartes à puce et de la bibliothèque PKCS#11
Citrix fournit une solution générique de redirection de carte à puce. Bien que seule la carte à puce OpenSC soit répertoriée dans notre liste de support, vous pouvez essayer d’utiliser d’autres cartes à puce et la bibliothèque PKCS#11. Pour passer à votre carte à puce spécifique ou à la bibliothèque PKCS#11 :
-
Remplacez toutes les instances de
opensc-pkcs11.sopar votre bibliothèque PKCS#11. -
Pour définir le chemin de votre bibliothèque PKCS#11 dans 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-->où PATH pointe vers votre bibliothèque PKCS#11, telle que
/usr/lib64/pkcs11/opensc-pkcs11.so -
Désactivez l’ouverture de session par carte à puce rapide sur le client.
