Guía de tecnologías

Integración de lectores de tarjetas inteligentes (pcsc-lite, CCID, OpenSC) en IPFire 2.19

11 min read Firewall Actualizado 19 Oct 2025
Smartcards CCID en IPFire 2.19
Smartcards CCID en IPFire 2.19

Objetivo principal y variantes relacionadas

  • Integrar soporte para tokens hardware y lectores CCID en IPFire 2.19
  • Variantes relacionadas: empaquetado de addons en IPFire, compilación cruzada en LFS, administración de smartcards en Linux, troubleshooting de pcscd y CCID

Introducción

Este artículo continúa el trabajo previo sobre el firewall IPFire. Aquí integramos soporte para tokens hardware, como tarjetas inteligentes, y sus lectores compatibles con CCID. Los paquetes compilados y empaquetados en este tutorial son:

  • pcsc-lite (PC/SC Smart Card Daemon)
  • CCID (controladores libres para lectores de tarjetas)
  • OpenSC (herramientas y bibliotecas de código abierto para smartcards)

Breve definición: pcsc-lite es el demonio que proporciona acceso a tarjetas inteligentes en Linux usando CCID o controladores propietarios. CCID contiene drivers para lectores basados en el estándar CCID. OpenSC ofrece API PKCS#11 y herramientas para gestión PKCS#15.

Usos comunes de tokens hardware:

  • Inicio de sesión seguro en web
  • Inicio de sesión en estaciones de trabajo
  • Cifrado de archivos
  • VPN (OpenVPN, L2TP)
  • Cifrado de correo electrónico

Proveedores y tarjetas compatibles con OpenSC (ejemplos comunes): ASEPCOS, FTCOSPK01C, OpenPGP Card, Cyberflex, CardOS, STARCOS

Requisitos y entorno

  • IPFire 2.19 código fuente y árbol LFS configurado (ver artículo previo para creación del entorno)
  • Acceso a la consola raíz del entorno de construcción
  • Paquetes fuente colocados en /usr/src/cache en el entorno de build
  • Dependencias de compilación típicas: compilador C, make, autotools, pkg-config, libudev-dev

Nota importante: Este tutorial asume que trabaja en la shell de prueba de IPFire invocada desde el directorio raíz del proyecto.

Preparación: abrir la shell de test

Ejecute en la raíz del proyecto IPFire:

./make shell

Consola para ejecutar la shell de IPFire

Descripción de la imagen: consola que muestra el prompt luego de ejecutar ./make shell en el entorno IPFire

Los paquetes fuente deben estar dentro de /usr/src/cache en el entorno de compilación. En este tutorial ya están colocados.

Directorio cache con los paquetes fuente

Descripción de la imagen: listado del directorio /usr/src/cache mostrando los paquetes fuente para pcsc-lite, ccid y opensc

Preparar dependencias

Antes de compilar pcsc-lite, instale libudev-dev dentro del entorno si falta:

apt-get install libudev-dev

Instalar libudev-dev

Descripción de la imagen: salida del gestor apt mostrando la instalación de libudev-dev

Compilar pcsc-lite en la shell de prueba

Extraiga y configure el paquete:

tar -xf pcsc-lite-1.8.18.tar.bz2
cd pcsc-lite-1.8.18
./configure

Descomprimir y configurar pcsc-lite

Descripción de la imagen: salida del comando tar y ejecución de ./configure para pcsc-lite

Si la salida de configure no muestra errores, continúe con la compilación e instalación en el entorno de test:

make
make install

Instalación de pcscd en la shell de test

Descripción de la imagen: ejecución de make y make install para pcsc-lite, mostrando rutas instaladas

Al terminar, anote las rutas que se muestran, porque serán necesarias para compilar los drivers CCID.

Rutas importantes tras instalar pcsc-lite

Descripción de la imagen: rutas y archivos instalados por pcsc-lite, p. ej., /usr/local/bin, /usr/local/lib, /usr/local/include

Compruebe que el demonio pcscd esté corriendo en la shell de test:

pcscd en ejecución

Descripción de la imagen: proceso pcscd listado en la salida de ps o top en la shell de test

Compilar el paquete CCID y resolver errores de configure

Coloque el paquete ccid en /usr/src/cache y extraiga. Al ejecutar ./configure puede aparecer un error indicando que pcsc-lite no fue encontrado por el script.

Error de configure en CCID

Descripción de la imagen: salida de configure indicando que falta pcsc-lite o que no se encuentra libpcsclite

Solución: proporcione explícitamente las cabeceras de PCSC al script de configure y exporte PKG_CONFIG_PATH si es necesario:

./configure PCSC_CFLAGS=-I/usr/local/include/PCSC

Si aparece un nuevo error porque libpcsclite.pc no está en la ruta de pkg-config del LFS, exporte la variable:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
./configure PCSC_CFLAGS=-I/usr/local/include/PCSC

Exportar PKG_CONFIG_PATH

Descripción de la imagen: comando export PKG_CONFIG_PATH y reejecución de ./configure para CCID

Si todo es correcto, configure mostrará que encontró las cabeceras y bibliotecas de PCSC.

Configure de CCID exitoso

Descripción de la imagen: salida de configure mostrando detección correcta de pcsc y libpcsclite

Compile e instale CCID:

make
make install

make y make install para CCID

Descripción de la imagen: compilación e instalación de la librería CCID

Copia las reglas udev para los lectores de tarjetas a /etc/udev/rules:

cp /92_pcscd_ccid.rules /etc/udev/rules

Copiar reglas udev

Descripción de la imagen: archivo 92_pcscd_ccid.rules copiado a /etc/udev/rules en el sistema de test

Compilar OpenSC

Coloque OpenSC en /usr/src/cache, extraiga y ejecute configure para verificar dependencias:

OpenSC en cache

Descripción de la imagen: listado de opensc en /usr/src/cache

Salida de configure y dependencias detectadas:

Salida de configure 1

Salida de configure 2

Compile e instale OpenSC en la shell de test:

make
make install

OpenSC make y make install

OpenSC instalado exitosamente

Descripción de las imágenes: logs de compilación e instalación, y confirmación de que opensc está disponible en el entorno

Estrategia para convertir los paquetes compilados en addons de IPFire

IPFire usa pakfire como gestor de paquetes. Para transformar los binarios compilados en paquetes .ipfire se siguen estos pasos generales:

  1. Preparar lfs scripts para cada paquete y colocarlos en el directorio lfs del árbol ipfire.
  2. Modificar make.sh para incluir los nuevos paquetes cuando sea necesario.
  3. Ejecutar ipfiremake para compilar con el esquema de IPFire.
  4. Corregir y copiar los rootfiles generados por los builds en config/rootfiles/packages.
  5. Crear directorios en src/paks/ y copiar scripts install.sh, uninstall.sh, update.sh del directorio default.
  6. Ejecutar ./make.sh build para producir los archivos .ipfire finales.

Estas tareas se detallan a continuación con ejemplos y comprobaciones.

Preparar lfs scripts y make.sh

Coloque los lfs scripts para pcsc-lite-1.8.18, ccid-1.4.24 y opensc-0.16.0 en el directorio lfs del árbol ipfire-2.x.

Descarga de LFS scripts

Descripción de la imagen: archivos lfs preparados en la carpeta lfs

Ejemplo de scripts mostrados en la UI del proyecto:

lfs pcsc-lite

lfs ccid

lfs opensc

Descripción de las imágenes: vistas de los lfs scripts en el sistema de archivos del proyecto

Modifique make.sh para incluir las nuevas entradas y rutas si es necesario.

Cambios en make.sh

Descripción de la imagen: fragmento de make.sh donde se añaden los paquetes pcsc-lite, ccid y opensc

Compilar los paquetes con ipfiremake

Use los comandos siguientes para iniciar las compilaciones dentro del entorno IPFire:

ipfiremake pcsc-lite
ipfiremake ccid
ipfiremake opensc

Para completar el proceso de build general, ejecute dos veces el script de build:

./make.sh build

Ejecutar make build

Descripción de la imagen: salida del primer ./make.sh build mostrando progreso de compilación

En la primera ejecución es normal que falten rootfiles para los paquetes nuevos. Revise log/ para los archivos rootfile generados.

rootfiles en el directorio log

Descripción de la imagen: tres rootfiles generados por la compilación en log/ con nombres derivados de los paquetes

Copie los rootfiles desde log/ a config/rootfiles/packages y renómbralos según el nombre LFS del paquete (sin extensión):

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

Copiar rootfiles a config

Descripción de la imagen: copia de rootfiles al directorio config/rootfiles/packages

A veces los rootfiles contienen caracteres de control o prefijos extras como el signo + que deben eliminarse antes de reconstruir. El siguiente comando sed elimina el signo + de todos los rootfiles afectados:

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

Eliminar signo plus de rootfiles

Plus eliminado de rootfiles

Descripción de las imágenes: antes y después de limpiar los archivos rootfile

Preparar los paquetes para pakfire

Cree los directorios src/paks/pcsc-lite, src/paks/ccid y src/paks/opensc y copie los scripts install.sh, uninstall.sh y update.sh desde src/paks/default/ a cada nuevo directorio.

Copiar scripts instalador

Descripción de la imagen: estructura de directorios src/paks con scripts copiados

Vuelva a ejecutar el build completo:

./make.sh build

Esta vez la compilación debe terminar y los paquetes finales .ipfire aparecerán en packages/.

Paquetes creados

Descripción de la imagen: paquetes pcsc-lite-1.8.18-2.ipfire, ccid-1.4.24-2.ipfire y opensc-0.16.0-2.ipfire creados

Instalación de los paquetes en un sistema IPFire en ejecución

Copie los archivos .ipfire al sistema IPFire en ejecución, preferiblemente a /opt/pakfire/tmp:/

Copiar paquetes al sistema en vivo

Paquetes copiados al sistema

Extraiga cada paquete en el sistema objetivo:

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

Desempaquetar addons

Desempaquetar ccid

Desempaquetar opensc

Instale cada addon ejecutando su script install.sh:

cd 
./install.sh

Instalar paquetes

Resultados de instalación en el sistema IPFire:

pcsc-lite instalado exitosamente

Instalar controladores smartcard

OpenSC instalado en IPFire

Descripción de las imágenes: confirmación visual de que cada paquete se instaló correctamente en IPFire

Verificaciones y pruebas posteriores a la instalación

  1. Verificar que pcscd se está ejecutando y responde:
ps aux | grep pcscd
pcsc_scan
  1. Conectar un lector CCID compatible y comprobar que aparece en lsusb y en pcsc_scan.

  2. Probar OpenSC para listar tarjetas y certificados:

opensc-tool -l
pkcs11-tool --list-slots --module /usr/lib/opensc-pkcs11.so
  1. Verificar reglas udev y permisos del dispositivo en /dev.

Notas de seguridad: asegúrese de aplicar permisos restrictivos en dispositivos de smartcard y de auditar el uso del demonio pcscd en sistemas de producción.

Troubleshooting — errores comunes y soluciones

  • Error: configure no encuentra libpcsclite.pc

    • Causa: pkg-config no apunta a /usr/local/lib/pkgconfig
    • Solución: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ y volver a ejecutar configure con PCSC_CFLAGS apuntando a /usr/local/include/PCSC
  • Error: rootfiles faltantes durante ipfire build

    • Causa: primer build produce rootfiles en log/ pero no se copiaron a config/rootfiles/packages
    • Solución: copiar los rootfiles desde log/ a config/rootfiles/packages y eliminar caracteres indeseados como el signo + con sed
  • Error: pcscd no detecta el lector después de instalar CCID

    • Causa: reglas udev no instaladas o permisos incorrectos
    • Solución: copiar 92_pcscd_ccid.rules a /etc/udev/rules y recargar udev: udevadm control –reload-rules; reconectar dispositivo
  • Error: OpenSC no lista certificados

    • Causa: lector o tarjeta no compatibles, o módulo PKCS#11 incorrecto
    • Solución: comprobar compatibilidad del chip y usar opensc-tool -l y pkcs11-tool para depurar

Checklist por rol antes de desplegar en producción

Administrador del desarrollo

  • Compilar pcsc-lite, CCID y OpenSC en el entorno LFS de IPFire
  • Verificar rutas de instalación y exportar PKG_CONFIG_PATH si hace falta
  • Generar paquetes .ipfire y comprobar logs de build

Integrador / DevOps

  • Copiar paquetes .ipfire al sistema IPFire de pruebas
  • Desempaquetar e instalar con install.sh
  • Verificar servicios y dispositivos: pcscd, lsusb, pcsc_scan

Operaciones / Seguridad

  • Revisar reglas udev y permisos en /dev
  • Revisar los logs de pcscd y opensc
  • Aplicar políticas de acceso a hardware y auditoría

Mini metodología para empaquetado de un addon IPFire

  1. Preparar fuente y dependencias en /usr/src/cache
  2. Crear lfs script probado en shell de test
  3. Ejecutar ipfiremake y ./make.sh build (puede requerir iteración para rootfiles)
  4. Copiar rootfiles limpios a config/rootfiles/packages
  5. Preparar src/paks/ con scripts de instalación
  6. Generar paquetes .ipfire y validar en sistema de pruebas
  7. Realizar pruebas funcionales y de seguridad
  8. Promover a producción si todas las pruebas pasan

Compatibilidad y consejos de migración

  • Mantenga una copia del árbol LFS original antes de añadir paquetes nuevos
  • Verifique dependencias de versiones; pcsc-lite, CCID y OpenSC deben ser compatibles con la libc y el toolchain del LFS
  • Para actualizaciones de IPFire mayores, regenere los paquetes en el nuevo entorno LFS para evitar incompatibilidades

Galería de casos límite y cómo abordarlos

  • Lector CCID muy nuevo no reconocido: comprobar si el fabricante publica un driver alternativo o actualizar CCID a una versión más reciente
  • Multiples lectores conectados: confirme que udev asigna symlinks consistentes y que las reglas no confligen
  • Usuarios que necesitan acceso concurrente a la tarjeta: documentar el uso del daemon y restricciones de sesión de PKCS#11

1 línea de glosario

  • pcscd: demonio que provee interfaz PC/SC para acceder a smartcards
  • CCID: estándar para lectores de tarjetas que permite drivers genéricos
  • OpenSC: conjunto de herramientas y librerías para interactuar con smartcards usando PKCS#11 y PKCS#15

Seguridad y privacidad — notas rápidas

  • Minimice privilegios del demonio pcscd y de scripts de instalación
  • Audite el acceso físico a lectores y tokens; una tarjeta física es factor 2FA
  • No almacene PINs en texto claro en scripts o configuraciones

Resumen y siguientes pasos

Resumen: hemos compilado y empaquetado pcsc-lite, CCID y OpenSC, resuelto errores típicos de configure y pkg-config, preparado addons para pakfire y desplegado las instalaciones en un sistema IPFire. Los pasos clave fueron exportar PKG_CONFIG_PATH, limpiar rootfiles y preparar los scripts de pakfire.

Siguientes pasos recomendados:

  • Probar la autenticación de usuario con smartcard en un entorno controlado
  • Documentar flujos de recuperación y retirada de tarjetas comprometidas
  • Automatizar las pruebas de integración para futuras versiones del árbol LFS

Importante: pruebe exhaustivamente en un entorno de staging antes de desplegar en producción.


Критерии приёмки

  • Los paquetes .ipfire se generan sin errores y aparecen en la carpeta packages/
  • Los servicios pcscd y opensc respondan en el sistema IPFire tras instalar los addons
  • Un lector CCID conectado es reconocido por pcsc_scan y opensc-tool

Fin del tutorial sobre integración de tarjetas inteligentes en IPFire 2.19

Autor
Edición

Materiales similares

Añadir menú Seleccionar al menú contextual de Windows
Windows

Añadir menú Seleccionar al menú contextual de Windows

Responder mensajes específicos en Instagram
Redes sociales

Responder mensajes específicos en Instagram

Cómo solicitar reembolso en Microsoft Store
Soporte

Cómo solicitar reembolso en Microsoft Store

Actualizar a VMware Workstation 17 Player con TPM
Virtualización

Actualizar a VMware Workstation 17 Player con TPM

Solucionar error 126 en Windows 11 y 10
Soporte técnico

Solucionar error 126 en Windows 11 y 10

Reservar cita en centro Xiaomi en India
Soporte técnico

Reservar cita en centro Xiaomi en India