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_Rev18.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_Rev18.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/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/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.

12 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.

    1. Francisco de la Peña:

      Gracias Juan Carlos, qué dicha que resulten de utilidad. Sería interesante saber si funciona en KaOS para comprobar si la guía es lo suficientemente genérica para Arch en general o si es necesario sugerir la instalación de algún paquete adicional.

  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.

  4. Diego Garro:

    Hola Francisco, estoy tratando de instalar dicho software en Manjaro KDE Plasma, supongo que al instalar rpm-tools se debe elegir este tipo de paquetería para la instalación del Firmador_BCCR. Sé que en derivadas de Arch no se puede instalar paquetes .rpm. Mi consulta va dirigida en despés de terminar estas instrucciones, qué sigue? Espero te encuentres bien y muchas gracias por tan valiosa información.

    Saludos.

    PD: Ya instalé todo esto en una laptop que tengo para pruebas con Linux Mint siguiendo las instrucciones del sitio oficial de la firma digital, pero mi máquina habitual la tengo con Manjaro y me gustaría instalarlo acá. Di con tu blog y lo seguí pero me estanqué a la hora de la instalación del Firmador_BCCR.

  5. Russell Martin:

    Hola Fran, muchas gracias para estos instrucciones. Desde el 2019 estoy usando Manjaro y me gusta mucho – cambié de Ubuntu para evitar SNAPs y tener el software mas actualizado. Intenté instalar en Debian 10, pero es una virtualbox y no me sirvió – entonces seguí estes instrucciones para instalarlo en Manjaro en el anfitrión conjunto con el guia de Jeremy para instalar el Firmador. ¡Exito! De nuevo, muchisimas gracias y voy a probar el firmador que recomiende.

  6. Jaime:

    Hola, como hago para instalar el signumone en manjaro?

    1. Francisco de la Peña:

      Hola Jaime,
      personalmente no he usado el SignumOne KS (certificado de Hacienda) sino que el SignumOne “normal” con Firma Digital, que es el recomendable para firmar facturas electrónica con fuerza probatoria.
      Hace más de un año que no publican la versión para Linux sin Firma Digital, lamentablemente (llegué a utilizarla antes de que la eliminaran de la descarga). La versión KS no la recomiendo porque la firma de un certificado emitido por Hacienda no tiene la misma fuerza probatoria en caso de reclamación que un certificado emitido por el BCCR (con CA raíz MICITT).
      En cualquier caso, recomiendo probar esto:
      1: Instala Java 8 y OpenJFX.
      1: Descarga SignumOne para Windows desde https://www.hacienda.go.cr/contenido/14839-herramienta-gratuita-de-emision-de-comprobantes (si usas el sin KS para firma digital, mucho mejor)
      2: Instala msitools (yo lo tengo en Fedora, en Arch creo que está en AUR solamente)
      3: Desde la terminal, en la carpeta de descargas, ejecuta msiextract nombredelfichero.msi
      4: Se habrá extraido en la carpeta PFiles/SignumOne/app por lo que desde esa carpeta, ejecuta java -jar signumone-app-jfx.jar (o como se llame el fichero jar)
      5: Edita el fichero /etc/hosts y en la línea 127.0.0.1 agrega al final tras un espacio: app.signum.one (o bien, crea una línea nueva con lo siguiente: 127.0.0.1 app.signum.one)
      6: Abre en el navegador el sitio https://app.signum.one:8123 y agrega una excepción para el sitio
      7: Abre el sitio web de hacienda y firma tu factura.
      Solo he probado a ejecutarlo y se abre pero no tengo que hacer facturas de momento. Si te funciona me avisas y creo una guía.

  7. Randy Hurtado:

    Muchas gracias por el tutorial fue de gran ayuda. Agrego un aporte, en mi caso tengo escritorio XFCE en Manjaro entonces en lugar de utilizar en editor de textos “gedit” utilice “mousepad” que es el que viene por defecto en Manjaro.
    Por ejemplo: En lugar de utilizar el código
    sudo gedit /etc/Athena/IDPClientDB.xml
    utilice el siguiente código
    sudo mousepad /etc/Athena/IDPClientDB.xml
    La instalación fue éxitosa así como el tutorial que viene en los comentarios para instalar el Firmador del BCCR fue instalado con éxito. Gracias totales a todos.

Deja un comentario

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