Guide des technologies

Intégration des smartcards (PC/SC, CCID, OpenSC) dans IPFire

9 min read Sécurité réseau Mis à jour 19 Oct 2025
Smartcards et CCID sur IPFire : guide d'intégration
Smartcards et CCID sur IPFire : guide d'intégration

Important : gardez les chemins d’installation et les règles udev sous contrôle et testez les lecteurs smartcard sur une machine de développement avant tout déploiement en production.

Objectif principal

Ce guide détaille l’intégration de tokens matériels (smartcards) et de leurs lecteurs compatibles CCID dans l’environnement IPFire. Les composants compilés et empaquetés sont :

  • pcsc-lite (daemon PC/SC)
  • CCID (pilotes libres pour lecteurs de cartes)
  • OpenSC (outils et bibliothèques open source pour smartcards)

Variantes d’intention liées : installation smartcard IPFire, compilation pcsc-lite, empaquetage pakfire, pilotes CCID Linux, configuration OpenSC.

TL;DR technique rapide

  • Compiler pcsc-lite, CCID et OpenSC dans le shell LFS d’IPFire.
  • Résoudre les erreurs de configure en exportant PKG_CONFIG_PATH et en passant PCSC_CFLAGS.
  • Copier et nettoyer les rootfiles pour la construction des paquets.
  • Créer les répertoires src/paks/* et y ajouter install.sh/uninstall.sh/update.sh.
  • Construire les paquets ipfire et les déployer sous /opt/pakfire/tmp sur la machine cible.

Contexte et cas d’usage

Les smartcards et autres tokens matériels servent à :

  • authentification web sécurisée,
  • authentification sur poste de travail (login local),
  • chiffrement de fichiers,
  • tunnels VPN (OpenVPN, L2TP),
  • chiffrement et signature d’e‑mails.

OpenSC fournit l’accès PKCS#11 (API) et la structure de gestion PKCS#15. PC/SC (pcsc-lite) est le démon d’accès aux cartes sur Linux, et CCID contient les pilotes pour de nombreux lecteurs USB.

Quelques fabricants pris en charge par OpenSC : ASEPCOS, FTCOSPK01C, OpenPGP Card, Cyberflex, CardOs, STARCOS.

Prérequis

  • Environnement de build IPFire (voir article précédent pour la mise en place du LFS/IPFire build environment).
  • Accès root sur l’environnement de build.
  • Paquets sources placés dans /usr/src/cache (pcsc-lite, ccid, opensc).
  • Outils de base : make, gcc, autotools, pkg-config.

Préparer le shell de test d’IPFire

Lancer le shell de développement LFS d’IPFire depuis la racine du dépôt :

./make shell

Exécution du shell IPFire

Les sources se situent dans /usr/src/cache sur l’environnement de build ; placez-y les archives nécessaires.

Aller au répertoire cache d'IPFire

Compiler pcsc-lite

  1. Vérifiez que le paquet source pcsc-lite est présent :

paquet source pcsc-lite

  1. Installer la dépendance de développement udev :
apt-get install libudev-dev

Installer libudev-dev

  1. Extraire et lancer ./configure :
tar -xf pcsc-lite-1.8.18.tar.bz2
./configure

Extraction et configuration pcsc-lite

  1. Vérifier qu’aucune erreur n’apparaît au configure :

Configure sans erreur

  1. Compiler et installer :
./make
./make install

Installation du démon pcscd

  1. Notez les chemins d’installation affichés par l’install pour les inclure plus tard :

pcsc-lite installé avec chemins importants

  1. Vérifier que pcscd tourne :

pcscd en cours d'exécution


Compiler CCID (pilotes)

  1. Placer l’archive ccid dans le cache.

  2. Lancer ./configure ; si configure ne trouve pas pcsc-lite, vous verrez une erreur :

Erreur configure CCID

  1. Relancer configure en précisant PCSC_CFLAGS :
./configure PCSC_CFLAGS=-I/usr/local/include/PCSC
  1. Si pkg-config ne trouve pas libpcsclite.pc (cas fréquent en LFS IPFire), exportez PKG_CONFIG_PATH :
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

Export PKG_CONFIG_PATH

  1. Relancer configure :
./configure PCSC_CFLAGS=-I/usr/local/include/PCSC

Re-exécution du configure

  1. Si configure détecte correctement les fichiers PCSC, il affichera les vérifications réussies :

Configure réussi

  1. Compiler et installer :
./make
./make install

make et make install CCID

  1. Copier les règles udev pour les lecteurs smartcard vers /etc/udev/rules :

Copier règles udev

Copier le fichier 92_pcscd_ccid.rules dans /etc/udev/rules pour que les lecteurs USB soient détectés correctement.


Compiler OpenSC

  1. Placer l’archive OpenSC dans /usr/src/cache et lancer ./configure pour vérifier les dépendances :

OpenSC dans cache

  1. La sortie du configure peut être longue ; assurez-vous que les dépendances (libusb, pkcs11-helper, libpcsclite, etc.) sont présentes :

Sortie configure 1

Sortie configure 2

  1. Compiler et installer :
./make
./make install

Compilation et installation OpenSC

  1. Vérifier l’installation d’OpenSC dans le shell :

OpenSC installé


Construire les addons IPFire (pakfire)

Après installation réussie dans le shell LFS, l’étape suivante est la transformation en paquets IPFire (.ipfire) via les scripts LFS et make.sh.

Pré-requis : lire la section “Building PSAD addon” de l’article précédent pour la méthodologie complète.

Points clés :

  • Placer un script LFS (lfs script) pour chaque package dans le répertoire lfs/.
  • Mettre à jour make.sh pour inclure les nouveaux paquets.

Les lfs scripts ont été créés pour : pcsc-lite-1.8.18, ccid-1.4.24 et opensc-0.16.0.

Télécharger scripts LFS

Exemples visuels des scripts LFS :

pcsc-lite lfs

ccid lfs

opensc lfs

Mettre à jour make.sh pour gérer les nouveaux paquets (ajouts visibles dans le script) :

Changements make.sh

Construire les paquets avec ipfiremake :

ipfiremake pcsc-lite
ipfiremake ccid
ipfiremake opensc

Puis lancer le build global (parfois nécessaire deux fois) :

./make.sh build

Lancer make build

Si vous voyez un message indiquant que les rootfiles ne sont pas trouvés, générez les logs ; trois rootfiles seront présents dans log/.

rootfiles dans log

Copiez-les vers config/rootfiles/packages et renommez-les pour correspondre au nom LFS du paquet :

cp log/pcsc-lite-1.8.18 config/rootfiles/packages/pcsc-lite
cp log/ccid-1.4.24 config/rootfiles/packages/ccid
cp log/opensc-0.16.0 config/rootfiles/packages/opensc

Copie rootfiles

Remarque : les rootfiles peuvent contenir un signe “+” en tête ; il faut le retirer :

sed -i 's/+//g' config/rootfiles/packages/pcsc-lite
sed -i 's/+//g' config/rootfiles/packages/ccid
sed -i 's/+//g' config/rootfiles/packages/opensc

Suppression du +

Vérifiez que les “+” ont bien été retirés :

Plus retiré des rootfiles

Préparer les scripts pakfire

Créer les répertoires src/paks/pcsc-lite, src/paks/ccid, src/paks/opensc et copier les scripts par défaut (install.sh, uninstall.sh, update.sh) depuis src/paks/default/ :

Copier scripts installateurs

Relancer la construction :

./make.sh build

Ignorez les messages de rootfiles manquants si vous les avez déjà ajoutés dans config/.

À la fin, les paquets .ipfire doivent apparaître dans le répertoire packages :

Paquets créés


Installer les paquets sur une machine IPFire en production

  1. Copier les paquets compilés sur la machine IPFire cible dans /opt/pakfire/tmp :

Copier paquets vers système live

  1. Vérifier la présence des fichiers :

Paquets copiés

  1. Déballer chaque paquet :
 tar -xvf pcsc-lite-1.8.18-2.ipfire
 tar -xvf ccid-1.4.24-2.ipfire
 tar -xvf opensc-0.16.0-2.ipfire

Dépaquetage pcsc-lite

Dépaquetage ccid

Dépaquetage opensc

  1. Lancer l’installation via les scripts fournis :
./install.sh

Installer paquets

  1. Vérifier l’installation : pcsc-lite, CCID et OpenSC doivent être installés et leurs binaires accessibles.

pcsc-lite installé

Installation pilotes CCID

OpenSC installé sur IPFire


Vérifications post‑installation

  • Vérifier que le démon pcscd tourne : ps aux | grep pcscd ou systemctl status pcscd si présent.
  • Lister les lecteurs détectés :
pcsc_scan
  • Tester l’accès à la carte via OpenSC :
opensc-tool -l
pkcs11-tool --list-slots
  • Vérifier les règles udev et les permissions du device (/dev/bus/usb/…, /dev/pcsc/* selon configuration).

Dépannage courant

  • Erreur configure CCID “pcsc-lite not found” : exporter PKG_CONFIG_PATH et fournir PCSC_CFLAGS vers /usr/local/include/PCSC.
  • Erreur liée à des fichiers .pc manquants : vérifiez l’installation de pkg-config et les chemins /usr/local/lib/pkgconfig.
  • Lecteur non détecté : vérifier règles udev, redémarrer udev, brancher le lecteur sur un autre port USB et relancer pcscd.
  • Permissions : s’assurer que l’utilisateur qui exécute pcscd a accès aux devices USB.

Mini‑méthodologie de projet (étapes rapides)

  1. Préparer l’environnement LFS et placer les sources dans /usr/src/cache.
  2. Compiler et tester localement pcsc-lite, CCID, OpenSC dans le shell LFS.
  3. Créer lfs scripts et modifier make.sh pour inclure les paquets.
  4. Construire les paquets .ipfire, copier les rootfiles, nettoyer les caractères indésirables.
  5. Préparer les scripts pakfire (install/uninstall/update).
  6. Construire à nouveau, récupérer les paquets, les copier sur IPFire cible et installer.
  7. Valider avec pcsc_scan et pkcs11-tool.

Checklist par rôle

Administrateur système :

  • Vérifier compatibilité matérielle des lecteurs CCID.
  • Installer libudev-dev et dépendances avant compilation.
  • Exporter PKG_CONFIG_PATH si nécessaire.
  • Redémarrer udev si les règles sont modifiées.

Développeur de paquets / intégrateur :

  • Placer les lfs scripts dans lfs/.
  • [ ] Mettre à jour make.sh et tester ./make.sh build deux fois.
  • Copier et nettoyer les rootfiles.
  • Préparer puis tester install.sh/uninstall.sh/update.sh.

Responsable sécurité / compliance :

  • Évaluer l’usage des tokens pour les flux sensibles (VPN, e-mail).
  • Documenter politiques d’émission des cartes et cycle de vie.
  • Tester procédures de révocation et rotation des certificats.

Arbre de décision (choisir l’approche d’intégration)

flowchart TD
  A[Besoin d'authentification matérielle?] -->|Non| B[Ne pas intégrer smartcards]
  A -->|Oui| C[Serveur IPFire déjà en place?]
  C -->|Non| D[Préparer environnement LFS / build]
  C -->|Oui| E[Avez-vous accès au build system?]
  E -->|Oui| F[Compiler pcsc-lite/CCID/OpenSC et créer paquets]
  E -->|Non| G[Utiliser hardware token compatible sans compilation 'ex: PKCS#11 via agent externe']
  F --> H[Déployer paquets sur IPFire et tester]
  H --> I[Production : déployer, monitorer, policy]
  G --> I
  D --> F

Quand cette approche peut échouer (contre‑exemples)

  • Environnements où l’installation de paquets personnalisés est interdite (politiques strictes).
  • Lecteurs propriétaires sans pilote CCID disponible et sans documentation pour développer un pilote.
  • Cas où l’interface USB est bloquée ou isolée par des règles matérielles/BIOS.

Alternatives

  • Utiliser un service d’authentification central (RADIUS/AD) avec EAP-TLS et un middleware de tokens plutôt que d’installer OpenSC sur le firewall.
  • Externaliser la gestion PKCS#11 à une appliance ou à un HSM si vous avez besoin d’une sécurité physique renforcée.

Sécurité et confidentialité

  • Limitez l’accès aux périphériques USB et aux sockets PC/SC via des règles udev et des ACL sur les binaires.
  • Sur IPFire, isoler le démon pcscd et limiter ses privilèges au minimum nécessaire.
  • Documenter le cycle de vie des cartes (émission, suspension, révocation) et chiffrer les sauvegardes de profil PKCS#15 si stockées.
  • GDPR : si des données personnelles transitent via les certificats, veillez aux règles de conservation et à la minimisation des données.

Critères d’acceptation / Test cases

  • pcscd démarre automatiquement et reste en état “running” après reboot.
  • Un lecteur CCID branché est détecté par pcsc_scan.
  • opensc-tool liste la carte et pkcs11-tool affiche au moins un slot.
  • Les paquets .ipfire installés sont réversibles via uninstall.sh sans laisser de fichiers temporaires.

Glossaire (1 ligne chacun)

  • PC/SC : API et modèle client/serveur pour accéder aux smartcards.
  • CCID : Spécification et pilotes pour lecteurs de cartes à puce USB.
  • OpenSC : Ensemble d’outils et bibliothèques open source pour smartcards et PKCS#11.
  • pkcs11-tool : Outil pour interagir avec les modules PKCS#11.
  • pcscd : Démon qui gère l’accès aux lecteurs et cartes via PC/SC.

Points d’attention locaux et migration

  • Conserver la compatibilité avec la version IPFire ciblée (ici 2.19) — vérifier les chemins et les versions des bibliothèques avant de migrer.
  • Si vous migrez vers une version d’IPFire plus récente, répétez la compilation dans le nouvel environnement LFS pour éviter des incompatibilités binaires.

Résumé final

Ce guide a présenté l’intégration complète des composants smartcard (pcsc-lite, CCID, OpenSC) dans IPFire, depuis la compilation dans le shell LFS jusqu’à la création des paquets pakfire et leur installation sur un système IPFire. Les étapes critiques incluent la gestion du PKG_CONFIG_PATH, la copie et le nettoyage des rootfiles, et la préparation des scripts pakfire. Testez systématiquement avec pcsc_scan et pkcs11-tool avant tout déploiement en production.


Notes

  • Conservez toujours une machine de test isolée pour valider les drivers et les règles udev avant tout changement sur des firewalls en production.
  • Documentez toutes les modifications (scripts make.sh, rootfiles modifiés, règles udev ajoutées) pour faciliter les audits et le support.
Auteur
Édition

Matériaux similaires

WhatsApp sans numéro réel — guide pratique
Confidentialité

WhatsApp sans numéro réel — guide pratique

Ajouter le menu Sélection au menu contextuel
Windows

Ajouter le menu Sélection au menu contextuel

Répondre à un message précis sur Instagram
Réseaux sociaux

Répondre à un message précis sur Instagram

Demander un remboursement sur le Microsoft Store
Support client

Demander un remboursement sur le Microsoft Store

Mettre à niveau vers VMware Workstation 17 Player
Virtualisation

Mettre à niveau vers VMware Workstation 17 Player

Corriger l'erreur 126 sous Windows 11/10
Dépannage Windows

Corriger l'erreur 126 sous Windows 11/10