Pour configurer la redirection de carte à puce sur une machine virtuelle (VM) SLED/SLES, installez les bibliothèques dont dépend la fonctionnalité et le certificat d'autorité de certification 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

Effectuez la procédure décrite dans la section Intégrer une machine virtuelle SLED/SLES à Active Directory pour la redirection de carte à puce.

Procédure

  1. Installez les modules de bibliothèque requis.
    1. Installez la bibliothèque PAM et d'autres modules.
      # zypper install pam_pkcs11 mozilla-nss mozilla-nss-tools 
          pcsc-lite pcsc-ccid opensc coolkey pcsc-tools

      Vous devrez peut-être activer des extensions telles que PackageHub pour installer tous les modules ci-dessus

    2. Pour utiliser les modules installés, activez les extensions telles que PackageHub et installez les outils PC/SC. Par exemple, vous pouvez exécuter les commandes suivantes pour SLED/SLES 12 SP3.
      # SUSEConnect --list-extensions
      # SUSEConnect -p PackageHub/12.3/x86_64
      # zypper in pcsc-tools
  2. Installez un certificat d'autorité de certification racine (CA).
    1. Téléchargez un certificat d'autorité de certification racine et enregistrez-le dans /tmp/certificate.cer sur le système. 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é, transférez-le vers un fichier .pem et créez un fichier de hachage.
      # openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
      # cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
      # chmod a+r /etc/pam_pkcs11/cacerts/certificate.pem
      # cd /etc/pam_pkcs11/cacerts
      # pkcs11_make_hash_link
    3. Installez les ancres d'approbation dans la base de données NSS.
      # mkdir /etc/pam_pkcs11/nssdb
      # certutil -N -d /etc/pam_pkcs11/nssdb
      # certutil -L -d /etc/pam_pkcs11/nssdb
      # certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pam_pkcs11/nssdb
    4. Installez les pilotes requis.
      # cp libcmP11.so /usr/lib64/
      # modutil -add "piv card 2.0" -libfile /usr/lib64/libcmP11.so -dbdir /etc/pam_pkcs11/nssdb/
  3. Modifiez le fichier /etc/pam_pkcs11/pam_pkcs11.conf.
    1. Supprimez la ligne use_pkcs11_module = nss. À sa place, ajoutez la ligne use_pkcs11_module = mysc.
    2. Ajoutez le module mysc, comme indiqué dans l'exemple suivant.
      pkcs11_module mysc {
        module = /usr/lib64/libcmP11.so;
        description = "MY Smartcard";
        slot_num = 0;
        nss_dir = /etc/pam_pkcs11/nssdb;
        cert_policy = ca, ocsp_on, signature, crl_auto;
      }
    3. Mettez à jour la configuration du mappeur de nom commun, comme indiqué dans l'exemple suivant.
      # Assume common name (CN) to be the login
      mapper cn {
            debug = false;
            module = internal;
            # module = /usr/lib64/pam_pkcs11/cn_mapper.so;
            ignorecase = true;
            mapfile = file:///etc/pam_pkcs11/cn_map;}
    4. Supprimez la ligne use_mappers = ms. À sa place, ajoutez la ligne use_mappers = cn, null.
  4. Modifiez le fichier de configuration /etc/pam_pkcs11/cn_map de sorte qu'il comprenne la ligne suivante.
    ads-hostname -> ads-hostname
  5. Modifiez la configuration PAM.
    1. Pour qu'il soit possible de configurer l'authentification par carte à puce, désactivez d'abord l'outil pam_config.
      # find /etc/pam.d/ -type l -iname "common-*" -delete
      # for X in /etc/pam.d/common-*-pc; do cp -ivp $X ${X:0:-3}; done
    2. Créez un fichier nommé common-auth-smartcard dans le répertoire /etc/pam.d/. Ajoutez le contenu suivant au fichier.
      auth    required        pam_env.so
      auth    sufficient      pam_pkcs11.so
      auth    optional        pam_gnome_keyring.so
      auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass
      auth    required        pam_winbind.so  use_first_pass
    3. Remplacez la ligne auth include common-auth par la ligne auth include common-auth-smartcard dans les deux fichiers /etc/pam.d/gdm et /etc/pam.d/xscreensaver.
  6. Pour configurer le service pcscd afin qu'il démarre automatiquement après le redémarrage de la VM, modifiez le fichier approprié pour votre version de SLED/SLES.
    • (SLED/SLES 12.x) Ajoutez la ligne rcpcscd start à /etc/init.d/after.local afin que le fichier soit semblable à l'exemple suivant.
      #! /bin/sh
      #
      # Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
      #
      # Author: Werner Fink, 2010
      #
      # /etc/init.d/after.local
      #
      # script with local commands to be executed from init after all scripts
      # of a runlevel have been executed.
      #
      # Here you should add things, that should happen directly after
      # runlevel has been reached.
      #
      rcpcscd start
    • (SLED/SLES 15.x) Ajoutez la ligne WantedBy=multi-user.target à /usr/lib/systemd/system/pcscd.service afin que le fichier soit semblable à 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]
      Also=pcscd.socket
      WantedBy=multi-user.target
      Après avoir modifié le fichier  pcscd.service, exécutez la commande suivante.
      systemctl enable pcscd
    Note : Si le service pcscd ne démarre pas après le redémarrage de la VM, la première connexion via pam_pkcs11 échoue.
  7. Désactivez le pare-feu.
    # rcSuSEfirewall2 stop
    # chkconfig SuSEfirewall2_setup off
    # chkconfig SuSEfirewall2_init off
    Note : La redirection de carte à puce échoue parfois lorsque le pare-feu est activé.
  8. Mettez à jour la bibliothèque PC/SC Lite vers la version 1.8.8.
    1. Activez les extensions et les modules nécessaires à l'installation des modules dépendants.
      • (SLED/SLES 12.x) Exécutez la commande suivante, en remplaçant <SUSE-version> par le numéro de version de votre distribution, par exemple 12.5 pour SLED/SLES 12 SP5.
        # SUSEConnect -p sle-sdk/<SUSE-version>/x86_64
      • (SLED/SLES 15.x) Exécutez la commande suivante, en remplaçant <SUSE-version> par le numéro de version de votre distribution, par exemple 15.3 pour SLED/SLES 15 SP3.
        # SUSEConnect -p PackageHub/<SUSE-version>/x86_64
    2. Mettez à jour la bibliothèque PC/SC Lite.
      # zypper in git autoconf automake libtool flex libudev-devel gcc
      # git clone https://salsa.debian.org/rousseau/PCSC.git
      # cd PCSC/
      # git checkout -b pcsc-1.8.8 1.8.8
      # ./bootstrap
      # ./configure -program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr 
        --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include  
        --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib64 
        --mandir=/usr/share/man --infodir=/usr/share/info --disable-static --enable-usbdropdir=/usr/lib64/pcsc/drivers
      # make
      # make install
  9. (SLED/SLES 15.x) Pour vous assurer que l'écran d'accueil de la carte à puce fonctionne correctement, modifiez le fichier org.gnome.Shell.desktop sur la VM.
    1. Ouvrez le fichier /usr/share/applications/org.gnome.Shell.desktop.
    2. Dans le fichier, recherchez et remplacez Exec=/usr/bin/gnome-shell par la ligne suivante.
      Exec=sh -c "DISPLAY=:${DISPLAY##*:} exec /usr/bin/gnome-shell"
      
    3. Enregistrez et fermez le fichier.
  10. Installez le module Horizon Agent, avec la redirection de carte à puce activée.
    # sudo ./install_viewagent.sh -m yes
  11. Redémarrez la VM et reconnectez-vous.