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 |
Procédure
- Installez les modules de bibliothèque requis.
- 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
- 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
- Installez un certificat d'autorité de certification racine (CA).
- 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.
- 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
- 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
- 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/
- Modifiez le fichier /etc/pam_pkcs11/pam_pkcs11.conf.
- Supprimez la ligne use_pkcs11_module = nss. À sa place, ajoutez la ligne use_pkcs11_module = mysc.
- 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;
}
- 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;}
- Supprimez la ligne use_mappers = ms. À sa place, ajoutez la ligne use_mappers = cn, null.
- Modifiez le fichier de configuration /etc/pam_pkcs11/cn_map de sorte qu'il comprenne la ligne suivante.
ads-hostname -> ads-hostname
- Modifiez la configuration PAM.
- 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
- 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
- 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.
- 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.
- 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é.
- Mettez à jour la bibliothèque PC/SC Lite vers la version 1.8.8.
- Activez les extensions et les modules nécessaires à l'installation des modules dépendants.
- 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
- (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.
- Ouvrez le fichier /usr/share/applications/org.gnome.Shell.desktop.
- 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"
- Enregistrez et fermez le fichier.
- Installez le module Horizon Agent, avec la redirection de carte à puce activée.
# sudo ./install_viewagent.sh -m yes
- Redémarrez la VM et reconnectez-vous.