Pour configurer la redirection de carte à puce sur un poste de travail Ubuntu, 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 poste de travail Linux |
Procédure
- Installez les bibliothèques requises.
apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc
libengine-pkcs11-openssl libnss3-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 votre poste de travail. 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é et transférez-le vers un fichier .pem.
openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
- Utilisez la commande certutil pour installer le certificat d'autorité de certification racine dans la base de données système /etc/pki/nssdb.
certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
- 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
- Créez un fichier de hachage pkcs11.
chmod a+r certificate.pem
pkcs11_make_hash_link
- Copiez les pilotes requis et ajoutez les fichiers de bibliothèque nécessaires au répertoire nssdb.
- Exécutez les commandes suivantes.
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
- Vérifiez que le certificat attendu est correctement chargé.
certutil -L -d /etc/pki/nssdb
Certificate Nickname
rootca
- Vérifiez que les bibliothèques attendues ont été ajoutées.
modutil -dbdir /etc/pki/nssdb -list
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
–-----------------------------------------------------------
- Configurez la bibliothèque pam_pkcs11.
- Créez un fichier pam_pkcs11.conf à l'aide de l'exemple de contenu par défaut.
mkdir /etc/pam_pkcs11
zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz |
tee /etc/pam_pkcs11/pam_pkcs11.conf
- 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";
}
- Modifiez le fichier /etc/pam_pkcs11/cn_map de sorte qu'il comprenne la ligne suivante.
ads-hostname -> ads-hostname
- Configurez l'authentification PAM.
- 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
- Pour Ubuntu 16.04, modifiez le fichier de configuration /etc/pam.d/lightdm. 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 debug
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin debug
auth [success=3 default=ignore} pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
auth optional pam_kwallet.so
- Pour Ubuntu 16.04, modifiez le fichier de configuration /etc/pam.d/unity. Placez la ligne d'autorisation pam_pkcs11.so avant la ligne common-auth, comme indiqué dans l'exemple suivant.
auth [success=3 default=ignore} pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
- 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
- Configurez le service pcscd pour qu'il démarre automatiquement après le redémarrage du système.
Note : Si le service pcscd ne démarre pas après le redémarrage du système, la première connexion via pam_pkcs11 échoue.
- 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
- Activez le service pcscd.
systemctl enable pcscd.service
- Mettez à jour la bibliothèque PC/SC Lite pour obtenir la version 1.8.8 à l'aide de la séquence de commandes suivante.
apt-get install -y git autoconf automake libtool flex libudev-dev
git clone https://salsa.debian.org/rousseau/PCSC.git
cd PCSC/
git checkout -b 1.8.8 pcsc-1.8.8
./bootstrap
./configure --prefix=/usr --sysconfdir=/etc --libdir=/lib/x86_64-linux-gnu/
CFLAGS="-g -O2 -fstack-protector-strong -Wformat ->Werror=format-security"
LIBS="-ldl" LDFLAGS="-Wl,-Bsymbolic-functions -Wl,-z,relro" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2"
make
make install
- Installez le module Horizon Agent, avec la redirection de carte à puce activée.
sudo ./install_viewagent.sh -m yes
Note : Vous devez installer
Horizon Agent 7.9 ou version ultérieure.
- Redémarrez votre système et reconnectez-vous.