Cómo instalar Firma Digital de Costa Rica en Manjaro (Arch Linux)

Esta guía documenta cómo instalar el controlador de la tarjeta de Firma Digital de Costa Rica y la jerarquía de certificados del Banco Central (SINPE) y del MICITT en el sistema operativo Manjaro, basado en Arch Linux. Es posible que pueda instalarse en Arch Linux pero que requiera instalar paquetes adicionales no mencionados. Esta instalación ha sido probada en Manjaro GNOME (Minimal), por lo que algunos comandos pueden variar como el uso del editor gedit si se utilizara otro entorno de escritorio diferente.

Las instrucciones están diseñadas para las distribuciones mencionadas previamente. Si se desea utilizar en distribuciones Fedora y Red Hat Enterprise Linux, existe la guía sobre cómo instalar Firma Digital de Costa Rica en Fedora, Red Hat Enterprise Linux 8 y CentOS 8. Para openSUSE Leap y Suse Linux Enterprise Server y Desktop, está la guía de cómo instalar Firma Digital de Costa Rica en openSUSE Leap 15.2, SLES 15 SP2 y SLED 15 SP2. Para Debian y Ubuntu está la guía de cómo instalar Firma Digital de Costa Rica en Debian y Ubuntu.

Esta guía de instalación tiene los siguientes propósitos:

  • Configurar de la forma más sencilla y adecuada el sistema para que funcione con la mayor cantidad de programas.
  • Lograr que funcione para todos los usuarios del sistema, incluyendo los nuevos usuarios creados tras las instalación.
  • Aislar la librería de Firma Digital en una “caja de arena” (sandbox) para que funcione con múltiples usuarios del sistema simultáneamente (soluciona un defecto en la librería al crear ficheros temporales).

Instalación de las dependencias

  • Instalar el soporte CCID de PC/SC para que reconozca el lector de tarjetas e IcedTea-Web para poder cargar algunos lanzadores que usan Java Web Start como por ejemplo el del sitio web de CrearEmpresa.go.cr o el Módulo Firma Digital de la CCSS.
    sudo pacman -S --noconfirm --needed firefox firefox-i18n-es-ar unzip cpio rpm-tools pcsclite ccid icedtea-web

Descarga del “instalador”

  • Descargar el “instalador” en el desplegable llamado “Usuarios Linux” en la página de descarga de instaladores del sitio web de Soporte Firma Digital de Costa Rica, introduciendo el número de serie de la tarjeta y aceptando las condiciones.
  • Descomprimir el archivo zip descargado con unzip, en el momento de escribir esta documentación se llama sfd_ClientesLinux_RPM64_Rev14.zip. Se creará una carpeta llamada Firma Digital. Se asume que el archivo zip se ha descargado en la carpeta Descargas:
    cd ~/Descargas/
    
    unzip sfd_ClientesLinux_RPM64_Rev14.zip
    

Instalación de los certificados

Es necesario agregar a la lista de confianza la jerarquía de certificados del SINPE y del MICITT. En teoría solamente sería necesario instalar los certificados raíz del MICITT pero en la práctica hay algunas aplicaciones que necesitan los certificados intermedios del SINPE para completar la cadena a la hora de validar. Para ello, un conjunto de comandos:

  • Copiar los certificados:
    sudo cp -p ~/Descargas/sfd_ClientesLinux_RPM64_Rev14/Firma\ Digital/Certificados/* /usr/share/ca-certificates/trust-source/anchors/
    
  • Regenerar los archivos de certificados para todas las aplicaciones:
    sudo update-ca-trust
    

Instalación del módulo PKCS#11

Aunque hay un módulo en el directorio Librerías, no es la versión más reciente y tiene varios defectos de enlazado. La versión distribuida en el paquete PinTool es más reciente y funciona correctamente en todos los programas probados. En el siguiente proceso se extrae y se instala conservando la fecha original de la librería.

  • Instalar el módulo PKCS#11 privativo en /usr/lib/:
    cd ~/Descargas/sfd_ClientesLinux_RPM64_Rev14/Firma\ Digital/PinTool/IDProtect\ PINTool\ 7.24.02/RPM/
    
    rpm2cpio idprotectclient-7.24.02-0.x86_64.rpm | cpio -dim ./usr/lib/x64-athena/libASEP11.so
    
    sudo cp -p usr/lib/x64-athena/libASEP11.so /usr/lib/
    
    sudo mkdir -p /usr/lib/x64-athena/
    
    sudo mkdir -p /Firma_Digital/LIBRERIAS/
    
    sudo ln -s /usr/lib/libASEP11.so /usr/lib/x64-athena/
    
    sudo ln -s /usr/lib/libASEP11.so /usr/local/lib/
    
    sudo ln -s /usr/lib/libASEP11.so /Firma_Digital/LIBRERIAS/
    
    sudo ln -s /usr/share/ca-certificates/trust-source/anchors /Firma_Digital/CERTIFICADOS
    
  • Crear el fichero /etc/Athena/IDPClientDB.xml y abrirlo para edición:
    sudo mkdir /etc/Athena/
    
    sudo gedit /etc/Athena/IDPClientDB.xml
    
  • En la ventana del editor de textos gedit, pegar el siguiente texto, guardar y cerrar el editor:
    <?xml version="1.0" encoding="utf-8" ?>
    <IDProtect>
     <TokenLibs>
      <IDProtect>
       <Cards>
        <IDProtectXF>
         <ATR type='hexBinary'>3BDC00FF8091FE1FC38073C821106600000000000000</ATR>
         <ATRMask type='hexBinary'>FFFF00FFF0FFFFFFFFFFFFFFFFF0FF00000000000000</ATRMask>
        </IDProtectXF>
       </Cards>
      </IDProtect>
     </TokenLibs>
    </IDProtect>
    
  • Crear un fichero llamado /usr/share/p11-kit/modules/firma-digital.module y abrirlo para edición:
    sudo gedit /usr/share/p11-kit/modules/firma-digital.module
    
  • En la ventana del editor de textos gedit, pegar el siguiente texto, guardar y cerrar el editor:
    remote: |bwrap --unshare-all --dir /tmp --proc /proc --dev /dev --ro-bind /etc/Athena /etc/Athena --ro-bind /usr /usr --ro-bind /var/run/pcscd /var/run/pcscd --ro-bind /run/pcscd /run/pcscd p11-kit remote /usr/lib/libASEP11.so
    
  • Habilitar y cargar el servicio pcscd bajo demanda:
    sudo systemctl enable --now pcscd.socket
    

Eso es todo. Es necesario reiniciar Firefox y cualquier otra aplicación que use certificados para que se apliquen los cambios.

Quizás resulte interesante utilizar la herramienta Firmador, software libre para firmar documentos.

6 comentarios en “Cómo instalar Firma Digital de Costa Rica en Manjaro (Arch Linux)

  1. Juan Carlos:

    Me alegra mucho Fran que sigue trabajando duro para que podamos instalar estas herramientas de trabajo (para algunos muy cotidianas) en diferentes distribuciones, ahorita estaba por trabajar con una disto que se llama KaOS inspirada en Arch aunque despues cambio el gestor de paquetes y ahora ellos tienen sus propios repositorios. Ya que quiero probar algunos sabores con KDE Plasma hay un grupo de facebook que todos los días son de escritorio https://www.facebook.com/groups/3401196263237743 algunos hacen personalizaciones muy bonitas.

  2. Carlos Daniel Quattrocchi:

    Hola Francisco, me gustaría contactar contigo, somos colegas en este tema. Soy de Argentina, vivo en Buenos Aires y me dedico al desarrollo de aplicaciones para Firma Digital. Te dejo mí correo y te mando un saludo cordial

  3. Jeremy Molina:

    Gracias por las instrucciones he creado mi propia nota con todo resumido jeje, muchas gracias.

    Una cosilla que yo hice distinto fue instalar java-openjfx primero y al final instalar openJDK via “Add/Remove”.

    $ sudo pacman -S java-openjfx
    $ sudo pacman -S cpio rpm-tools pcsclite ccid icedtea-web

    openJDK que instale: https://www.archlinux.org/packages/extra/x86_64/jdk11-openjdk/

    Esto es por preferencia, para saber que estoy instalando un paquete valido y no tener que buscar cual versión es cual…

    1. Francisco de la Peña:

      Gracias Jeremy. Es una de las ventajas de las distribuciones poder elegir paquetería y la manera de instalarla por diferentes comandos o interfaces.
      Aprovecho para mencionar que existen varias versiones de Java estables y se suelen poder instalar todas en paralelo y se puede seleccionar cuál será la que funcionará por defecto. Esto es importante porque algunas aplicaciones como por ejemplo el componente de firma del SICOP no funcionan con Java 11. En algunas distros como debian/ubuntu y fedora/redhat/centos tienen un comando llamado update-alternatives y alternatives respectivamente, mientras que Arch Linux tiene el comando archlinux-java para elegir la máquina virtual por defecto. Está documentado en el wiki de la distribución.
      Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada.