Product Documentation

Authentification unique avec des cartes à puce

Feb 26, 2018

Les utilisateurs peuvent utiliser une carte à puce connectée à la machine cliente pour s'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. La carte à puce peut également être utilisée au cours de la session, par exemple pour ajouter une signature numérique à un document, pour chiffrer ou déchiffrer un courrier électronique ou pour s'authentifier auprès d'un site Web nécessitant l'authentification par carte à puce.

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

La disponibilité de l'authentification pass-through avec des cartes à puce dépend des facteurs suivants :

  • Le VDA Linux est installé sur RHEL 7.3. 
  • SSSD est utilisé pour l'intégration AD.
  • Des cartes à puce prises en charge par CoolKey sont utilisées.
  • Citrix Receiver pour Windows est utilisé.

Remarque

L'authentification par carte à puce auprès de NetScaler n'est pas officiellement prise en charge. 

S'assurer que CoolKey prend en charge votre carte à puce

CoolKey est un pilote de carte à puce largement utilisé sur RHEL. CoolKey prend en charge quatre types de cartes à puce, à savoir les cartes CoolKey, CAC, PIV et PKCS#15, mais le nombre de cartes officiellement prises en charge et validées reste limité (voir 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, et le pilote CoolKey prend en charge Yubikey 4.

localized image

Si votre organisation requiert une carte à puce plus avancée, préparez une machine physique sur laquelle les packages RHEL 7.3 et CoolKey sont installés (pour plus d'informations sur l'installation de CoolKey, voir Installer le pilote de la carte à puce), insérez la carte à puce et exécutez la commande suivante pour vérifier que la carte à puce est prise en charge par CoolKey :

Commande Copier

pkcs11-tool --module libcoolkeypk11.so --list-slots

Si CoolKey prend en charge votre carte à puce, les résultats de la commande sont similaires aux suivants avec informations sur le logement de la carte.

localized image

Configuration

Configurer l'environnement de la carte à puce

Le VDA Linux 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 des Citrix Receiver. Pour plus d'informations sur la configuration basée sur la carte à puce Yubikey 4, consultez l'article Citrix CTX206156

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 implémentation de la spécification Personal Computer/Smart Card (PC/SC) sous Linux qui fournit une interface de carte à puce Windows pour communiquer 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.

Commande Copier

yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs

Installer le pilote de la carte à puce

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

Commande Copier

yum install coolkey

Installer les modules PAM pour l'authentification par carte à puce

Exécutez la commande suivante pour installer les modules pam_pkcs11, pam_krb5 et krb5-pkinit.

Commande Copier

yum install pam_pkcs11 pam_krb5 krb5-pkinit

Le module pam_pkcs11 est un module d'authentification enfichable qui permet l'authentification utilisateur basée sur un certificat X.509. Le module pam_krb5 est un module d'authentification enfichable qui peut être utilisé par les applications prenant en charge PAM 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.

Installer le logiciel VDA Linux sur RHEL 7.3

Installez le logiciel VDA Linux à l'aide du gestionnaire de packages RPM ou de l'installation facile, voir la section Présentation de l'installation. Assurez-vous que SSSD est sélectionné en tant que méthode d'intégration Active Directory (AD). 

Une fois l'installation du VDA terminée, vérifiez que le 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 de l'authentification par mot de passe.

Préparer un certificat racine

Un certificat racine est utilisé pour vérifier le certificat dans la carte à puce. Procédez comme suit 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.

Commande Copier

openssl x509 -inform der -in certnew.cer -out certnew.pem

2. Installez le certificat racine dans le répertoire openssl. Le fichier certnew.pem est utilisé à titre d'exemple.

Commande Copier

cp certnew.pem /etc/pki/CA/certs/

Configurer la base de données NSS

Le module pam_pkcs11 utilise la base de données NSS pour accéder aux cartes à puce et aux certificats. Procédez comme suit pour configurer la base de données NSS.

1. Ajoutez le certificat racine susmentionné à la base de données NSS.

Commande Copier

certutil -A -n "My Corp Root" -t "CT,C,C" -a -d /etc/pki/nssdb -i  /etc/pki/CA/certs/certnew.pem

2. Exécutez la commande suivante pour vérifier que le certificat racine est correctement ajouté à la base de données NSS.

Commande Copier

certutil -L -d /etc/pki/nssdb

Les résultats de la commande sont similaires aux suivants si le certificat racine est ajouté avec succès.

localized image

3. Vérifiez si CoolKey est installé dans la bibliothèque NSS PKCS # 11.

Commande Copier

modutil -list -dbdir /etc/pki/nssdb

Les résultats de la commande sont similaires aux suivants si le module CoolKey est installé. 

localized image

Si le module CoolKey n'est pas installé, exécutez la commande suivante pour l'installer manuellement et vérifiez à nouveau l'installation.

Commande Copier

modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb

Configurer le module pam_pkcs11

Le module pam_pkcs11 utilise la configuration locale (du VDA) pour vérifier les certificats utilisateur. Le certificat racine par défaut utilisé par pam_pkcs11 se trouve dans /etc/pam_pkcs11/cacerts/. Chaque certificat racine dans ce chemin a un lien de hachage. Exécutez les commandes suivantes pour installer le certificat racine préparé et configurer pam_pkcs11.

Commande Copier

mkdir /etc/pam_pkcs11/cacerts/

cp certnew.pem /etc/pam_pkcs11/cacerts/

cacertdir_rehash /etc/pam_pkcs11/cacerts

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. 

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

     EXAMPLE.COM = {

       kdc = KDC. EXAMPLE.COM

       pkinit_anchors = FILE:/etc/pki/CA/certs/certnew.pem

       pkinit_kdc_hostname = KDC.EXAMPLE.COM

       pkinit_cert_match = ||msScLogin,digitalSignature

       pkinit_eku_checking = kpServerAuth

 }     

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

localized image

Configurer l'authentification PAM

Les fichiers de configuration PAM indiquent les modules qui sont utilisés pour l'authentification PAM. Pour l'authentification par carte à puce, ajoutez les lignes suivantes au fichier /etc/pam.d/smartcard-auth pour ajouter les modules pam_pkcs11 et pam_krb5.

     auth        [success=ok ignore=2 default=die] pam_pkcs11.so nodebug wait_for_card     

     auth        optional      pam_krb5.so use_first_pass no_subsequent_prompt preauth_options=X509_user_identity=PKCS11:/usr/lib64/pkcs11/libcoolkeypk11.so

     auth        sufficient    pam_permit.so

     account     [default=bad success=ok auth_err=ignore user_unknown=ignore ignore=ignore] pam_krb5.so

     session     optional      pam_krb5.so   

Le fichier de configuration ressemble à ce qui suit après les modifications.

localized image

(Facultatif) Configurer SSO 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 SSO avec le VDA Linux, configurez Citrix Receiver. La configuration est la même avec le VDA Windows. Pour plus d'informations, consultez l'article Citrix CTX133982.

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

localized image

Utilisation

Se connecter au VDA Linux avec une carte à puce

Le VDA Linux prend en charge la connexion avec une carte à puce dans les scénarios SSO et non SSO. 

  • Dans le scénario SSO, les utilisateurs sont automatiquement connectés à StoreFront avec le certificat et le code PIN de la carte à puce mis en cache. Lorsque les utilisateurs lancent 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, les utilisateurs sont invités à sélectionner un certificat et à entrer un code PIN pour se connecter à StoreFront.
localized image

Lorsque les utilisateurs lancent une session de bureau virtuel Linux dans StoreFront, une boîte de dialogue de connexion au VDA Linux apparaît comme suit, où le nom d'utilisateur est extrait du certificat de la carte à puce et les utilisateurs doivent à nouveau entrer le code PIN pour l'authentification de connexion. 

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

localized image

Se reconnecter à une session avec 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 VDA Linux 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.

localized image

Limitation

Stratégie de retrait de carte à puce

Actuellement, le VDA Linux 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 VDA Linux, la session reste connectée et l'écran de session n'est pas verrouillé.