Pour configurer la redirection de carte à puce sur une machine virtuelle (VM) Ubuntu, installez les bibliothèques dont dépend la fonctionnalité et le certificat d'autorité de certification (CA) racine pour prendre en charge l'authentification approuvée des cartes à puce. En outre, vous devez modifier certains fichiers de configuration pour terminer la configuration de l'authentification.

Certains exemples de la procédure utilisent des valeurs d'espace réservé pour représenter des entités dans votre configuration réseau, telles que le nom DNS de votre domaine AD. Remplacez les valeurs d'espace réservé par des informations spécifiques à votre configuration, comme décrit dans le tableau suivant.

Valeur d'espace réservé Description
dns_IP_ADDRESS Adresse IP de votre serveur de nom DNS
mydomain.com Nom DNS de votre domaine AD
MYDOMAIN.COM Nom DNS de votre domaine AD en majuscules
MYDOMAIN Nom DNS du groupe de travail ou domaine NT qui inclut votre serveur Samba, en majuscules
ads-hostname Nom d'hôte de votre serveur AD
ads-hostname.mydomain.com Nom de domaine complet (FQDN) de votre serveur AD
mytimeserver.mycompany.com Nom DNS de votre serveur de temps NTP
AdminUser Nom d'utilisateur de l'administrateur de VM

Conditions préalables

Intégrer une machine virtuelle Ubuntu à Active Directory pour la redirection de carte à puce

Procédure

  1. Installez les bibliothèques requises sur la VM Ubuntu.
    apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc 
         libengine-pkcs11-openssl libnss3-tools
  2. Installez un certificat d'autorité de certification racine.
    1. Téléchargez un certificat d'autorité de certification racine et enregistrez-le dans /tmp/certificate.cer sur la VM Ubuntu. Reportez-vous à Exportation du certificat d'autorité de certification de racine.
    2. Localisez le certificat d'autorité de certification racine que vous avez téléchargé et transférez-le vers un fichier .pem.
      openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
    3. Utilisez la commande certutil pour installer le certificat d'autorité de certification racine dans la base de données système /etc/pki/nssdb.
      Remplacez « Certificat d'autorité de certification racine » dans l'exemple de commande suivant par le nom du certificat d'autorité de certification racine dans la base de données système.
      certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
    4. Copiez le certificat d'autorité de certification racine dans le répertoire /etc/pam_pkcs11/cacerts.
      mkdir -p /etc/pam_pkcs11/cacerts
      
      cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
  3. Créez un fichier de hachage pkcs11.
    chmod a+r certificate.pem
    pkcs11_make_hash_link
  4. Copiez les pilotes requis et ajoutez les fichiers de bibliothèque nécessaires au répertoire nssdb.
    1. Exécutez des commandes semblables à l'exemple suivant.
      Ces exemples de commandes montrent comment ajouter libcmP11.so, le fichier de pilote de la carte Gemalto PIV 2.0, au répertoire nssdb. À la place de libcmP11.so, vous pouvez remplacer le fichier de pilote par votre carte à puce.
      cp libcmP11.so /usr/lib/
      mkdir -p /etc/pki/nssdb
      certutil -N -d /etc/pki/nssdb
      certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pki/nssdb
      modutil -dbdir /etc/pki/nssdb/  -add "piv card 2.0" -libfile /usr/lib/libcmP11.so
    2. Vérifiez que le certificat attendu est correctement chargé en exécutant la commande suivante.
      # certutil -L -d /etc/pki/nssdb
      Vérifiez que la commande renvoie un résultat semblable à l'exemple suivant.
      Certificate Nickname
      rootca
    3. Vérifiez que les bibliothèques attendues sont correctement ajoutées en exécutant la commande suivante.
      modutil -dbdir /etc/pki/nssdb -list
      Vérifiez que la commande renvoie un résultat semblable à l'exemple suivant.
      Listing of PKCS #11 Modules
      –-----------------------------------------------------------
        1. NSS Internal PKCS #11 Module
               slots: 2 slots attached
              status: loaded
      
               slot: NSS Internal Cryptographic Services
              token: NSS Generic Crypto Services
      
               slot: NSS User Private Key and Certificate Services
              token: NSS Certificate DB
      
        2. piv card 2.0
              library name: /usr/lib/libcmP11.so
               slots: There are no slots attached to this module
              status: loaded
      –-----------------------------------------------------------
  5. Configurez la bibliothèque pam_pkcs11.
    1. Créez un fichier pam_pkcs11.conf à l'aide de l'exemple de contenu par défaut.
      • Pour Ubuntu 18.04 ou 20.04, exécutez la séquence de commandes suivante.
        mkdir /etc/pam_pkcs11
        zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | tee /etc/pam_pkcs11/pam_pkcs11.conf
      • Pour Ubuntu 20.04.1 ou version ultérieure, exécutez la séquence de commandes suivante.
        mkdir /etc/pam_pkcs11
        cat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example | tee /etc/pam_pkcs11/pam_pkcs11.conf
    2. Modifiez le fichier /etc/pam_pkcs11/pam_pkcs11.conf, comme indiqué dans l'exemple suivant.
      use_pkcs11_module = mysc;                            
              
      pkcs11_module mysc {                                 
                    module = /usr/lib/libcmP11.so;         
                    description = "LIBCMP11";               
                    slot_num = 0;                           
                    ca_dir = /etc/pam_pkcs11/cacerts;       
                    nss_dir = /etc/pki/nssdb;        
                    cert_policy = ca;                       
      }                                                    
      ...
      use_mappers = cn, null;                        
      ...
      mapper cn {
            debug = false;
            module = internal;
            # module = /lib/pam_pkcs11/cn_mapper.so;
            ignorecase = true;
            mapfile = file:///etc/pam_pkcs11/cn_map;         
            # mapfile = "none";
      }
    3. Modifiez le fichier /etc/pam_pkcs11/cn_map de sorte qu'il comprenne la ligne suivante.
      Common name -> Login ID
  6. Modifiez le fichier de configuration /etc/pam.d/gdm-password. Placez la ligne d'autorisation pam_pkcs11.so avant la ligne common-auth, comme indiqué dans l'exemple suivant.
    #%PAM-1.0
    auth    requisite       pam_nologin.so
    auth    required        pam_succeed_if.so user != root quiet_success
    auth sufficient pam_pkcs11.so                                                                               
    @include common-auth
    auth    optional        pam_gnome_keyring.so
    @include common-account
  7. Pour vérifier le matériel de la carte à puce et les certificats installés sur la carte à puce, exécutez les commandes suivantes.
    pcsc_scan
    pkcs11_listcerts
    pkcs11_inspect
  8. Pour prendre en charge la fonctionnalité Single Sign-On (SSO) par carte à puce, configurez le fichier /etc/vmware/viewagent-greeter.conf. Reportez-vous à la section Définir des options dans des fichiers de configuration sur un poste de travail Linux.
  9. Configurez le service pcscd pour qu'il démarre automatiquement après le redémarrage de la VM.
    Note : Si le service pcscd ne démarre pas après le redémarrage de la machine virtuelle, la première tentative de connexion par le biais de pam_pkcs11 échoue.
    1. Modifiez le fichier /lib/systemd/system/pcscd.service en ajoutant la ligne WantedBy=multi-user.target à la section [Installer].
      Vérifiez que le fichier modifié ressemble à l'exemple suivant.
      [Unit]
      Description=PC/SC Smart Card Daemon
      Requires=pcscd.socket
      
      [Service]
      ExecStart=/usr/sbin/pcscd --foreground --auto-exit
      ExecReload=/usr/sbin/pcscd --hotplug
      
      [Install]
      WantedBy=multi-user.target
      Also=pcscd.socket
    2. Activez le service pcscd.
      systemctl enable pcscd.service
  10. Installez le module Horizon Agent, avec la redirection de carte à puce activée.
    sudo ./install_viewagent.sh -m yes
    Note : Si vous obtenez un message d'erreur vous demandant d'installer la bibliothèque PC/SC Lite par défaut, désinstallez la bibliothèque PC/SC Lite personnalisée actuellement présente sur la machine et installez la bibliothèque PC/SC Lite par défaut à l'aide de la commande suivante.
    apt-get install --reinstall pcscd libpcsclite1

    Vous pouvez ensuite exécuter le programme d'installation d'Horizon Agent.

  11. Si vous utilisez une bibliothèque PC/SC Lite personnalisée, configurez les options pcscd.maxReaderContext et pcscd.readBody dans le fichier /etc/vmware/config.
  12. Redémarrez la VM Ubuntu et reconnectez-vous.