Cómo instalar Firma Digital de Costa Rica en GNU/Linux Debian 9 y 10

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 los sistemas operativos Debian 9 y 10.

Importante: A partir de ciertas actualizaciones de Ubuntu 18.04 y posteriores esta guía ha dejado de funcionar correctamente, por lo que se creará una guía por separado cuando se encuentre la mejor solución pare resolverlo. Provisionalmente se recomienda utilizar otra distribución que no sea Ubuntu si se desea una instalación funcional multiusuario como Debian, Fedora, CentOS u openSUSE, de lo contrario se sugiere a los usuarios de Ubuntu seguir los pasos de la guía en PDF de SoporteFirmaDigital para cada usuario y perfil de navegador. Si ya se había instalado previamente con los pasos aquí indicados, se puede leer en los comentarios al final de esta entrada de blog una forma de revertir los cambios.

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.1, SLES 15 SP1 y SLE 15 SP1.

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). Esta característica no está disponible en Debian 9.

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 y OpenJFX si pretende usarse algún firmador que lo use (NexU, por ejemplo). Bubblewrap es la herramienta para aislar la librería en la caja de arena. Binutils y sudo no vienen instalados en Debian por defecto.
    sudo apt -y install pcscd bubblewrap icedtea-netx openjfx binutils sudo
    

En el caso de Debian, para poder usar los comandos con sudo, ejecutar como root usermod -a -G sudo nombredeusuario reemplazando nombredeusuario por el nombre de usuario que se desee usar con sudo y reiniciar para aplicar cambios. En Ubuntu no es necesario este paso.

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_DEB64_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_DEB64_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. El último instalador también incluye una CA del BCCR, probablemente para el certificado de código de su propio firmador (que en teoría tampoco debería ser necesario si el sistema operativo está correctamente actualizado). Para ello, un conjunto de comandos:

  • Copiar los certificados:
    sudo cp -p ~/Descargas/sfd_ClientesLinux_DEB64_Rev14/Firma\ Digital/Certificados/* /usr/local/share/ca-certificates/
    
    sudo rename.ul -- .cer .crt /usr/local/share/ca-certificates/*.cer
    
    for file in /usr/local/share/ca-certificates/*.crt; do sudo openssl x509 -inform DER -in "$file" -out "$file.tmp"; done 2>/dev/null
    
    sudo find /usr/local/share/ca-certificates/ -type f -empty -delete
    
    sudo rename.ul -- .tmp '' /usr/local/share/ca-certificates/*.tmp
    
  • Regenerar los archivos de certificados para todas las aplicaciones:
    sudo update-ca-certificates --fresh
    

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/x86_64-linux-gnu/:
    cd ~/Descargas/sfd_ClientesLinux_DEB64_Rev14/Firma\ Digital/PinTool/IDProtect\ PINTool\ 7.24.02/DEB/
    
    ar p idprotectclient_7.24.02-0_amd64.deb data.tar.gz | tar zx ./usr/lib/x64-athena/libASEP11.so
    
    sudo cp -p usr/lib/x64-athena/libASEP11.so /usr/lib/x86_64-linux-gnu/
    
    sudo mkdir -p /usr/lib/x64-athena/
    
    sudo mkdir -p /Firma_Digital/LIBRERIAS/
    
    sudo mkdir -p /Firma_Digital/CERTIFICADOS/
    
    sudo ln -s /usr/lib/x86_64-linux-gnu/libASEP11.so /usr/lib/x64-athena/
    
    sudo ln -s /usr/lib/x86_64-linux-gnu/libASEP11.so /usr/lib/
    
    sudo ln -s /usr/lib/x86_64-linux-gnu/libASEP11.so /usr/local/lib/
    
    sudo ln -s /usr/lib/x86_64-linux-gnu/libASEP11.so /Firma_Digital/LIBRERIAS/
    
    sudo ln -s /usr/local/share/ca-certificates /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 --ro-bind /etc/Athena /etc/Athena --proc /proc --dev /dev --ro-bind /usr /usr --ro-bind /lib /lib --ro-bind /lib64 /lib64 --ro-bind /var/run/pcscd /var/run/pcscd p11-kit remote /usr/lib/x86_64-linux-gnu/libASEP11.so
    

    Solamente para Debian 9 (sí funciona en Debian 10): la línea anterior no funciona porque incluye una versión demasiado antigua de p11-kit. En su lugar debe usarse esta otra línea: module: /usr/lib/x86_64-linux-gnu/libASEP11.so

  • Crear un fichero llamado /usr/local/sbin/update-p11-kit-symlinks y abrirlo para edición:
    sudo gedit /usr/local/sbin/update-p11-kit-symlinks
    
  • En la ventana del editor de textos gedit, pegar el siguiente texto, guardar y cerrar el editor:
    #!/bin/sh
    
    FIREFOX_LIB=/usr/lib/firefox/libnssckbi.so
    FIREFOX_ESR_LIB=/usr/lib/firefox-esr/libnssckbi.so
    THUNDERBIRD_LIB=/usr/lib/thunderbird/libnssckbi.so
    NSS_LIB=/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
    
    if [ -e "$FIREFOX_LIB" ]
    then
        if ! [ -L "$FIREFOX_LIB" ]
        then
            echo "Firefox libnssckbi.so is not a symlink. Fixing..."
            mv -f "$FIREFOX_LIB" "$FIREFOX_LIB".bak
            ln -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so "$FIREFOX_LIB"
        fi
    fi
    
    if [ -e "$FIREFOX_ESR_LIB" ]
    then
        if ! [ -L "$FIREFOX_ESR_LIB" ]
        then
            echo "Firefox ESR libnssckbi.so is not a symlink. Fixing..."
            mv -f "$FIREFOX_ESR_LIB" "$FIREFOX_ESR_LIB".bak
            ln -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so "$FIREFOX_ESR_LIB"
        fi
    fi
    
    if [ -e "$THUNDERBIRD_LIB" ]
    then
        if ! [ -L "$THUNDERBIRD_LIB" ]
        then
            echo "Thunderbird libnssckbi.so is not a symlink. Fixing..."
            mv -f "$THUNDERBIRD_LIB" "$THUNDERBIRD_LIB".bak
            ln -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so "$THUNDERBIRD_LIB"
        fi
    fi
    
    if [ -e "$NSS_LIB" ]
    then
        if ! [ -L "$NSS_LIB" ]
        then
            echo "NSS libnssckbi.so is not a symlink. Fixing..."
            mv -f "$NSS_LIB" "$NSS_LIB".bak
            ln -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so "$NSS_LIB"
        fi
    fi
    
  • Agregar el atributo de ejecutable al script:
    sudo chmod +x /usr/local/sbin/update-p11-kit-symlinks
    
  • Crear un fichero llamado /etc/systemd/system/p11-kit-proxy-updater.service y abrirlo para edición:
    sudo gedit /etc/systemd/system/p11-kit-proxy-updater.service 
    
  • En la ventana del editor de textos gedit, pegar el siguiente texto, guardar y cerrar el editor:
    [Unit]
    Description=mantenimiento de enlaces a p11-kit-proxy
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/sbin/update-p11-kit-symlinks
    
    [Install]
    WantedBy=multi-user.target
    
  • Activar el servicio al arranque y ejecutarlo una primera vez para comprobar que funciona:
    sudo systemctl enable --now p11-kit-proxy-updater.service
    

Solamente para Debian 10 y posteriores: a partir de versiones recientes de p11-kit hay que modificar el fichero /usr/share/p11-kit/modules/p11-kit-trust.module y eliminar o desactivar la línea disable-in: p11-kit-proxy agregando un “#” al inicio de esa línea.

sudo gedit /usr/share/p11-kit/modules/p11-kit-trust.module

La línea quedaría como sigue, el resto no hay que modificarlo:

#disable-in: p11-kit-proxy

Si no aparece esa línea en ese fichero entonces versión de p11-kit es más antigua y no requiere este paso.

Eso es todo. Es necesario reiniciar Firefox y cualquier otra aplicación que use certificados para que se apliquen los cambios. Si se ha insertado el lector y la tarjeta al lector, estas aplicaciones preguntarán por el PIN en páginas donde se solicite autenticación (por ejemplo en el sitio web de Internet Banking del Banco Nacional), lo que indicará que se la instalación ha sido exitosa.

Si el componente de firma del Banco Central está instalado debería funcionar para poder realizar la prueba de firma. El sitio web de Soporte Firma Digital podría usar todavía la prueba de Java y no funciona con los navegadores modernos. En su lugar podría usarse la prueba con el firmador BCCR desde la página de Firma Digital de verificación de certificados (requiere instalar los certificados para poder entrar).

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

48 comentarios en “Cómo instalar Firma Digital de Costa Rica en GNU/Linux Debian 9 y 10

  1. Allan:

    Gracias, el método descrito en la página de soporte no sirve, sin embargo este sí

  2. Eddy Murias:

    lo felicito, excelente artículo y funciona a la perfección.
    saludos.

  3. David Hine:

    Me funcionó a la perfección

    muchas gracias muy útil

  4. Francisco de la Peña:

    Hola Wilfredo, la guía mostrada en este blog no requiere más que descargar los controladores del sitio de Soporte Firma Digital, la guía que tienen allí hace tiempo que no la reviso, es más, creo que para visualizarla todavía require Flash y efectivamente no es necesario seguirla y ni la recomendaría. Lo más probable es que esa guía oficial siga agregando manualmente y para cada usuario del sistema el módulo PKCS#11 (libASEP11.so), mientras que la que propongo funciona para todos los usuarios y todos los navegadores.

    En cuanto al soporte de Firefox la funcionalidad que agrega serviría en todas las versiones de Firefox (excepto los applets, lo explico en el siguiente párrafo). La configuración mostrada aquí funciona para la autenticación con certificados de la tarjeta, por ejemplo para iniciar sesión en el sitio web de Banco Nacional (si se registra previamente, requiere Internet Explorer 11), entre otros. La configuración de Firefox en teoría debería funcionar con la que venga con Ubuntu 18.04. Lo que se muestra para configurar Firefox y Thunderbird es porque estos software utilizan su propia infraestructura de servicios criptográficos llamada Network Security System (NSS), que son junto con OpenSSL, GnuTLS y Java, software que permite acceder a tarjeta y que mantienen una lista de certificados que implementan cada uno a su manera de forma histórica. En distribuciones como Fedora se han esforzado para unificar toda la configuración. En Ubuntu todavía se ocupa realizar esos ajustes para poder tener una integración de acceso a dispositivo y a certificados que sirva para todos los usuarios.

    Cabe decir que los applets Java ya no tienen soporte desde hace más de un año en Firefox y la versión 52 ESR ya ha dejado de tener soporte, que era la última que soportaba applets. Lamentablemente, sitios web como el de la CCSS están utilizando esa tecnología obsoleta y la única manera sería descargar manualmente una versión vieja e insegura de Firefox, además de instalar el paquete icedtea web. La forma correcta de resolver este problema es que la Caja y otras instituciones actualicen sus mecanismos de firma digital lo antes posible, aunque sea usando el firmador del BCCR o con otras implementaciones alternativas. Saludos.

    1. Wilfredo:

      Gracias por su respuesta! Y Cómo valido que el sistema operativo esté detectado mi Athena smartcard?

      1. Francisco de la Peña:

        Con gusto. Se puede detectar en varios niveles. Se puede comprobar si la tarjeta funciona con la herramienta pcsc_scan que viene en el paquete pcsc-tools. Si se ejecuta por terminal detectará la tarjeta cuando se conecta. Para usar esta herramienta no necesita ni siquiera el módulo PKCS#11, ya que la detección la realiza a un nivel más bajo, que solamente requiere tener el proceso pcscd en ejecución.

        Si la tarjeta la detectara bien en este punto, entonces lector y tarjeta funcionan. Si por alguna razón funcionaran en el punto anterior pero no en otros lugares, podría faltar el fichero XML que se explica en la guia y que configura la máscara ATR para que el módulo libASEP11.so la detecte correctamente. Para verificar que en Firefox la detecta y si se han seguido los pasos de la guía, una forma fácil es ir al sitio web https://www.bnonline.fi.cr/ y haciendo clic sobre el botón de Firma Digital. Si funciona aparecerá una ventana de petición del PIN de la tarjeta. Si se ingresa el pin correctamente, aparecerá otra ventana para seleccionar el certificado de autenticación.

        Otra forma de probarlo de forma idéntica es el primer paso de la prueba de firma de Soporte Firma Digital, porque el primer paso es el mecanismo autenticación, que no requiere Java. El segundo paso de la prueba es para el proceso de firma, este sí que requiere Java y no serviría porque los navegadores modernos ya no soportan tecnología applet: Prueba de autenticación en Soporte Firma Digital.

        En cualquier caso, el primer paso ya demostraría que la tarjeta está funcionando correctamente.

        Otra alternativa para probarlo es dirigiéndose a las Preferencias de Firefox -> Privacidad y Seguridad -> abajo del todo seleccionar Dispositivos de seguridad, allí debería aparecer el lector de la tarjeta bajo la sección p11-kit-proxy y hacer clic en Iniciar sesión. Si pide el PIN y lo ingresa, aparecerá sesión iniciada. Esto no es necesario hacerlo para usarla en los sitios web pero es una forma de comprobar que funciona desde Firefox sin entrar en sitios web específicos.

        Otra manera es mediante la prueba del firmador BCCR o con el programa Firmador, que se mencionan en el penúltimo y último párrafo. En el caso del programa Firmador, solicitará el PIN al elegir un documento PDF para firmar, de lo contrario mostrará mensajes de error más o menos específicos indicando dónde podría estar fallando.

        Para prevenir errores en las pruebas, conviene que el lector esté conectado antes de iniciar Firefox o aparecerá un error poco intuitivo al tratar de realizarlas. La tarjeta sí que puede conectarse tanto antes como después de haber iniciado el navegador.

        Cabe mencionar que solamente he verificado el funcionamiento correcto con los lectores ASEDrive y Omnikey, que además son los que provee el instalador oficial de Soporte Firma Digital en Windows. En el caso de otros lectores, la mayoría son compatibles con Linux si usan la interfaz estándar CCID, pero no sabría decir si algún modelo concreto requiere alguna instalación adicional de controladores. Saludos.

  5. Daniel:

    Hola. Gracias por la guía, funciona a la perfección. Solamente tuve un problema con Firefox luego de la instalación, y es que dejó de reconocer los certificados web firmados por ‘DigiCert’, por lo que la conexión SSL a algunos sitios muestro un error de conexión. Este problema se soluciona editando las opciones de confianza desde las preferencias de Firefox para los certificados bajo la CA de Digicert.

    Gracias de nuevo por la guía, super útil!

    1. Francisco de la Peña:

      Hola Daniel, muchas gracias.

      La CA raíz de Symantec (comprada por DigiCert) iba a dejar de estar confiada en varios navegadores a partir de octubre de 2018. Esta es la nota de Mozilla sobre Symantec, es posible que tenga relación:

      Lo que deben hacer los webmasters es cambiar el certificado por otro emitido por una CA confiada por los navegadores. Si realmente se trata de un certificado de Symantec emitido por la CA raíz de Symantec no estaría siendo afectado por esta instalación sino por cualquier usuario de Firefox a partir de la versión 63.

      También hay un cambio en Ubuntu 18.10 (en realidad en el paquete p11-kit) que hace que Firefox desconfíe en cualquier conexión SSL. He actualizado la guía con el cambio requerido a partir de esta versión. Saludos.

  6. ESTEBAN JIMENEZ:

    Hola estoy en un sistema Ubuntu 18.04. No comprendo el siguiente paso:
    Solamente para Ubuntu 18.10: A partir de esta versión hay que modificar el fichero /usr/share/p11-kit/modules/p11-kit-trust.module y eliminar o desactivar la última línea agregando un “#” al inicio de esa línea.
    sudo gedit /usr/share/p11-kit/modules/p11-kit-trust.module
    La última línea quedaría como sigue, el resto no hay que modificarlo:
    #disable-in: p11-kit-proxy
    No comprendo cuál es la última linea?

    1. Francisco de la Peña:

      Hola Esteban, ese paso es solamente para Ubuntu versión 18.10 y posteriores. En el caso de Ubuntu 18.04 ese fichero no existe y por tanto no hay que realizar ese cambio porque la línea no existe al no existir el fichero, por tanto esa instrucción en particular se puede omitir.

  7. Kevin Moraga:

    También es posible utilizar JSignPDF (se que el Firmador es suyo, gracias Fran. No se si conocías ese proyecto). Por lo que busqué una alternativa era porque necesitaba agregarle la imagencilla que dice que está firmado digitalmente (de forma urgente).
    Para utilizar JSignPDF:
    1. Descargar jSignPDF, desde:
    http://jsignpdf.sourceforge.net/

    2. Configurar, los siguientes archivos:
    – conf.properties:
    pkcs11config.path=conf/pkcs11.cfg

    – pkcs11.cfg
    library=/usr/lib/x86_64-linux-gnu/libASEP11.so

    3. Y ejecutar:
    java -jar JSignPdf.jar -kst PKCS11 -ksp $PIN$ -a -V /home/user/miarchivo.pdf

      1. Francisco de la Peña:

        Gracias Kevin, sí conocía JSignPDF, de hecho lo usé hace unos años.
        Sobre agregar una imagen a la firma visible o no, es un tema relacionado con los estándares. El estándar PAdES, parte 6 recomienda (no es obligatorio, solo recomienda) no agregar imágenes que no tengan relación con la información del firmante (punto 5.1, página 8): “A conforming signature handler should not use information identifying the signer (e.g. name, graphics) that is not derived from certificate, when creating the signature appearance”. En algunos países la firma digital incluye una imagen empotrada dentro del certificado que es extraíble y esta norma indica que cuando exista una imagen dentro del certificado deberá agregarse a la firma, pero los certificados para personas físicas en Costa Rica por ahora no incluyen esta información. Es por eso en Firmador 1.4.0 solo muestra texto por ahora para seguir esta recomendación, aunque es cierto que hay muchas instituciones que gustan de esta característica por lo extendido que está su uso.
        En cuanto a si JSignPDF cumple el nivel PAdES LTV no estoy seguro, lo mejor es utilizar el validador que tiene el firmador, que está basado en un estándar que no aplica aquí para validar pero es el que actualmente se utiliza en Europa. También el Signatures Conformance Checker de ETSI es recomendable para comprobar que no existan problemas en la estructura de la firma. Saludos.

    1. Francisco de la Peña:

      Hola de nuevo Kevin, no sé si entendí bien lo de que ocupaba que mostrara una imagencilla indicando que el documento está firmado digitalmente. En realidad Firmador 1.4.0 agrega ese texto en la posición que quiera, pero si lo visualiza en Firefox (PDF.js) ese bloque no se ve por un bug de PDF.js porque no soporta el formato de formulario. En Evince y otros visores sí se ve. Saludos.

  8. Harold:

    Solo demasiadas gracias… de nuevo.
    Y el firmador funciona a la perfección.

    1. Francisco de la Peña:

      Con gusto Harold. En el futuro quiero mantener paquetes de instalación en repositorios APT (Debian, Ubuntu) y Yum (Fedora, RHEL/CentOS y openSUSE/SLES/SLE) para facilitar la instalación tanto del controlador de Firma Digital como de Firmador y proporcionar actualizaciones automáticas. Saludos.

  9. valarauco:

    Una actualización con respecto a la nueva versión de Debian 10:
    – No se aplican las instrucciones “Solamente para Debian 9” (las librerías ya fueron actualizadas)
    – Se deben aplicar las instrucciones marcadas “Solamente para Ubuntu 18.10 y posteriores”

    Muchas gracias por este HowTo!

    1. Francisco de la Peña:

      Muchas gracias valarauco, he actualizado la guía con los cambios para Debian 10.

      En unos meses eliminaré de la guía los datos de Debian 9 para animar a que se migre a la 10 por temas de estabilidad (la técnica del remote evita caídas del sistema).

      1. valarauco:

        Ya probé la revisión 12 en Debian 11 y funciona bien con todas las instrucciones de Debian 10. Incluyendo “#disable-in: p11-kit-proxy”
        Me parece que en Ubuntu 18.10 se requiere esa parte también pues si no se desactiva todos los certificados se invalidan en el navegador y ya no reconoce ninguno sitio.

  10. Juan Carlos:

    Tienes una guìa para instalar algún programa para firmar documentos pdf, estoy entrando al mundo linux utilizando Ubuntu. Usando la guìa de soporte digital pudo instalar la firma y me lee el lector de firma, autentico paginas que requieren firma digital pero no eh encontrado algùn programa que me ayude a firmar pdf

    1. Francisco de la Peña:

      Hola Juan Carlos, al final de la guía se sugiere una herramienta para firmar que está en el sitio web https://firmador.app y que permite firmar y validar documentos PDF. Si está el paquete java instalado (sudo apt install default-jre) puedes abrir el archivo firmador.jar descargado con doble clic.

    2. Francisco de la Peña:

      Para usar este firmador hay que seleccionar un pdf en el botón de la parte superior, luego en la pestaña firmar mueves la firma en la ubicación de la página seleccionada y finalmente clic en firmar. Pedirá el PIN y luego aparecerá la ventana para indicar la ubicación de dónde guardarlo. Saludos.

  11. Juan Carlos:

    Hola Francisco ya sacaron una nueva versión del instalador solo hay que actualizar un poquito los comandos por ejemplo unzip sfd_ClientesLinux_DEB64_Rev11.zip por unzip sfd_ClientesLinux_DEB64_Rev12.zip, entre otros

    1. Francisco de la Peña:

      Hola Juan Carlos, muchas gracias, ya quedó actualizada con las nuevas rutas. Sin embargo no he logrado que funcione con Ubuntu 18.04 en una máquina virtual con la nueva librería. Sorprendentemente se queda bloqueado con CPU 100%, algo que no sucede en Fedora en máquina física. He comprobado que con la versión de libASEP11.so que venía con el idprotectclient 6.x no se bloquea en Ubuntu 18.04, algo que me parece bastante sorprendente y no he logrado comprender todavía.

      1. Juan Carlos:

        En mi caso tengo tres lectores de firma solo funciona de forma correcta con una, las otras dos no hay forma que funcione probé con su guía y el manual de instalación que trae el paquete que suministran en soporte digital.

        1. Francisco de la Peña:

          Por el momento he probado con los lectores Athena ASEDrive V3CR (cuadrado negro) y el HID OMNIKEY 3021 con el controlador CCID de PC/SC que se instala con las instrucciones del blog y soporta ambos. Por lo general no influye en el desempeño del middleware de Athena/NXP. He leído que existe otro middleware de unos lectores compactos de otro fabricante de lectores que aparentemente tenía acuerdos con NXP y que soportarían las tarjetas pero intenté probarlo sin éxito, aunque no tengo lectores de marca relacionada. ¿Podría indicar con qué lectores ha logrado que funcione y con cuáles no? Podría resultar útil.

  12. Henry Picado:

    Saludos. Agradezco y aplaudo primero que nada este esfuerzo que hace el señor Francisco. De verdad es un gran aporte para la comunidad de SoftWareLibre. en Costa Rica.
    He seguido las indicaciones para Ubuntu 18.04 y he tenido grandes problemas con el navegador de Firefox a tal punto que se han vuelto inaccesibles todas la webs al momento de activar el Firmador del BCR. Esto me pasó ya varias veces en distintos intentos en los que lo seguí. ¿Puede recomendarme hacer algo?
    Saludos

    1. Francisco de la Peña:

      Muchas gracias Henry. Como he comentado recién en otro comentario del blog a Juan Carlos, algo extraño está sucediendo, al menos con la nueva librería que viene incluida en la revisión 12 dentro del idprotectclient 7.x, porque bloquea cualquier aplicación que trate de cargarla en Ubuntu, consumiendo el 100% de CPU, por lo que en este caso en particular no solo afecta a Firefox. Lo más sorprendente es que en Fedora está funcionando bien. Si conserva la librería de la revisión 11 o anteriores todavía hay opciones de hacerla funcionar en Ubuntu. En los próximos días investigaré más a fondo qué puede estar sucediendo, además de probarla en versiones recientes de Ubuntu y también en Debian 10 para comprobar si también sufren el mismo comportamiento errático con la nueva librería.

      En cuanto a lo que menciona del firmador del BCR, imagino que se trata del firmador del BCCR. La última versión que probé fue la 4.0 o la 5.0 y estaba funcionando más o menos bien en Ubuntu pero algo sucedió con alguna actualización de Firefox y Thunderbird. El problema con la nueva revisión 12 de la librería incluida en el paquete de soportefirmadigital es un problema aparte pero que además causa que no funcionen del todo las aplicaciones que acceden a dispositivos de seguridad.

    2. valarauco:

      A mi me pasó en Debian que se quebraron todos los certificados y entonces todos los sitios con HTTPS se mostraban como inseguros y los HSTS inaccesibles.

      Modifiqué el archivo /usr/share/p11-kit/modules/p11-kit-trust.module y comenté la línea disable-in: p11-kit-proxy como dicen las instrucciones de Debian 10 y listo, todo funcionó. Ubuntu 18.10 en adelante, están basados en Debian 10 si no me equivoco.

      1. Francisco de la Peña:

        Muchas gracias de nuevo Valarauco por los datos, probaré con Debian 9 para ver si sigue funcionando con la rev.12 en la máquina virtual para comprobar si tiene el mismo problema que Ubuntu 18.04. También revisaré con Ubuntu 19.10 y openSUSE.

        El problema con la rev.12 que no estaba en la rev.11 con Ubuntu 18.04 es que también bloquea Firefox pero el error es diferente: en lugar de aparecer una alerta de seguridad se queda cargando las páginas hasta agotar el tiempo de espera (y uso de CPU 100%). También afecta a cualquier otra aplicación que trate de usar libASEP11.so, aunque no se esté usando p11-kit del todo, por lo que lo de disable-in: p11-kit-proxy no sirve con la rev.12 en Ubuntu 18.04 al menos en el ambiente probado. En Fedora, al igual que en Debian 10+, la librería de la rev.12 funciona sin problemas.

  13. Sergio Morales:

    Muchas gracias por la guía. Llegué hasta el final sin errores, pero al reiniciar Firefox, cuando intento entrar a alguna página de Google (correo, buscador, etc.) me aparece el error “SEC_ERROR_LIBRARY_FAILURE” y no tengo acceso a esos sitios. ¿Qué debo hacer?

    1. Francisco de la Peña:

      Con gusto Sergio.

      Si el error se está presentando con Ubuntu 19.10 no se ha encontrado solución todavía, por lo que se sugiere utilizar Ubuntu 18.04 o Debian 10. Este error está sucediendo desde la revisión 12 de la librería de SoporteFirmaDigital.

      Una opción es usar el libASEP11.so que venía con la revisión 11 de SoporteFirmaDigital que se sabe que funcionaba correctamente en Ubuntu 19.10. Existe un respaldo en la siguiente dirección:

      https://github.com/luisza/instaladoresFirmaDigitalCR/raw/master/lib/x86_64/libASEP11.so

      Saludos.

      1. Sergio Morales:

        Muchas gracias, Francisco, por su pronta respuesta. Estoy usando Ubuntu 18.04.

        1. Francisco de la Peña:

          Hola de nuevo Sergio, acabo de actualizar una Ubuntu 18.04 que uso para pruebas y efectivamente, ahora también está afectada por el mismo problema que existe en ubuntu 19.10. En ese caso sugiero intentar usar la librería de la versión anterior mediante este comando, me avisa si luego tras reiniciar Firefox logra navegar:

          sudo wget https://github.com/luisza/instaladoresFirmaDigitalCR/raw/master/lib/x86_64/libASEP11.so -O /usr/lib/x86_64-linux-gnu/libASEP11.so

        2. Francisco de la Peña:

          Hola de nuevo Sergio, acabo de comprobar que con la librería del comentario anterior, aunque es necesaria, todavía funciona y estoy obteniendo el mismo error instantáneo, por lo que por ahora sugiero esta otra solución:

          ejecuta en una terminal sudo systemctl disable --now p11-kit-proxy-updater, también ejecuta sudo apt -y install --reinstall firefox, luego ejecuta sudo gedit /usr/share/p11-kit/modules/firma-digital.module y agrega el siguiente texto en una nueva línea: disable-in: firefox aunque si quieres puedes agregar separado con espacios otros programas como thunderbird o seahorse. Entonces ocuparás agregar manualmente la librería desde Firefox, pero primero ocupa reiniciarlo tras los cambios anteriores. Entonces, en Firefox en Preferencias -> Privacidad y seguridad -> baja abajo del todo a Dispositivos de seguridad -> Cargar -> nombre del módulo: Firma Digital -> Examinar… -> Control+L -> y teclea: /usr/lib/x86_64-linux-gnu/libASEP11.so -> Abrir -> Aceptar. Esta es la forma “tradicional” que se configura para usuarios individuales, por lo que si elimina el perfil de Firefox o hay más usuarios en esa computadora deberá agregar la librería desde las preferencias nuevamente. Espero hacer un script más sofisticado para agregar la librería para usuarios de Ubuntu mientras no encuentre una forma más sencilla como la que estaba funcionando hasta ahora. Este problema no se ha reportado que esté afectando en Debian, Fedora, Centos o SUSE, solo en Ubuntu. Saludos.

          1. Sergio Morales:

            Hola Francisco. De nuevo, muchas gracias por su pronta respuesta. Realicé todo lo que indicó y acá estoy de nuevo con conexión. Ahora solo queda aprender cómo usar la firma digital.

          2. Sergio Morales:

            Hola Francisco.
            Ya estoy firmando documentos en Ubuntu 18.04 gracias a su apoyo. Estoy utilizando la herramienta “Firmador” que usted recomendó al final de su guía. Sin embargo, veo que en LibreOffice viene la opción de “Firma digital” pero no hace tal proceso, o al menos no me aparece mi firma disponible. No es problema para mí gracias a que puedo usar la herramienta que usted sugiere, pero quería saber si conoce cuál será la causa de esta situación con el Writer.

            De nuevo, muchas gracias.

            1. Francisco de la Peña:

              Hola Sergio. Acabo de probar la opción de Firmas Digitales en LibreOffice y sí está reconociendo que tengo el lector y la tarjeta y me permite firmar. Acabo de probar en writer a firmar desde Archivo -> Firmas digirales -> Firmas digitales… y desde allí en el botón Firmar documento… me solicita el PIN de la tarjetas in problemas. Si no apareciera, en la opción “Iniciar gestor de certificados” cargará la app de contraseñas y claves si tiene la app Seahorse instalada, ahí debería aparecer, aunque esto es de forma informativa. LibreOffice permite firmar digitalmente mediante la lectura del perfil de usuario de Firefox. Esto lo puede comprobar en el menú Herramientas -> Opciones… -> LibreOffice -> Seguridad -> Ruta del certificado y debería aparecer un perfil llamado firefox:default seleccionado. Si no aparece es que hay algo extraño en ese perfil o no cargó en Firefox la librería en ese perfil como se indicó en el paso anterior. La herramienta Firmador no ocupa tener esto configurado en Firefox, pero LibreOffice sí lo ocupa. Tema relacionado aparte, le informo de que se está trabajando para que la app firmador sea capaz de firmar y validar documentos firmados con LibreOffice y viceversa (OpenDocument). Si tiene cualquier duda o no le salieron estos pasos me avisa. Por cierto, si finalmente aparecen los 2 certificados en LibreOffice tiene que elegir el de No Repudio (el que pone (FIRMA), si estira el ancho de la columna en caso de que no entre el nombre).

            2. Francisco de la Peña:

              Hola de nuevo Sergio, creo que en mi caso tuve que cerrar Firefox y abrir LibreOffice para que me reconociera la tarjeta, por lo que quizás hay un bloqueo mientras Firefox está abierto, por si puedes probar si fuera el caso. Saludos.

              1. Sergio Morales:

                Hola Francisco.

                Disculpe responderle tanto tiempo después, pero no tenía acceso a la computadora de mi oficina para probar lo que usted indicó con el Writer. Sin embargo, acabo de conseguir un lector para mi portátil, hice todo el proceso y lo único que tuve que modificar fue seleccionar el perfil “firefoxdefault” ya que no era el que estaba por defecto. Pese a este cambio, no me sale algo para escoger en la opción “Firma digital”, tanto en “Firmar” como en “gestor de certificados”.

                Saludos.

                1. Francisco de la Peña:

                  Hola Sergio, hay que asegurarse de que la tarjeta esté funcionando en el perfil de Firefox para que funcione en LibreOffice, ya que la configuración la toma directamente del perfil. Esto se puede verificar en sitios como la web de bancos como el BN o el Popular, o en la prueba de autenticación del sitio web de soportefirmadigital. En este momento no puedo verificarlo desde aquí todo el proceso paso a paso porque se me ha estropeado el lector de tarjetas pero espero tener para la otra semana uno nuevo. Es importante que el lector esté conectado antes de iniciar Firefox o LibreOffice y quizás incluso la tarjeta insertada por aquello (por lo menos recuerdo que de esta forma funciona). Saludos.

                  1. Sergio Morales:

                    Hola Francisco.

                    En el sitio de soportefirmadigital sí funciona. También con el programa “Firmador BCCR”. Probé en el del Popular pero se quedó “pegado” verificando. Y en el Banco Nacional no me aparece el teclado virtual ni opciones para usar firma digital.

                    Estaré pendiente de alguna novedad.

                    Muchas gracias.

                    1. Francisco de la Peña:

                      Hola, la prueba de autenticación de soportefirmadigital.com es la misma que la de los sitios web del BNCR y del popular, por lo que en teoría debería funcionar en estos bancos de la misma forma. En el popular creo que hay que solicitarlo si se es cliente explícitamente para que se pueda usar login con firma digital y contraseña de forma dual, de lo contrario solo funciona una de ellas. En el BNCR cambiaron el sistema recientemente: primero hay que ingresar la cédula de cliente y luego hacer clic en el logotipo de Firma Digital que aparece debajo del tablero del PIN. Saludos.

  14. Juan Carlos:

    Volvieron a actualizar el cliente de Linux ahora vamos por la versión 13

    1. Francisco de la Peña:

      Muchas gracias Juan Carlos, he actualizado la guía con el cambio (no hay novedades importantes aparte del cambio del nombre y un nuevo certificado de Persona Física). Saludos.

  15. Sergio Morales:

    Hola Francisco.

    En el sitio del Banco Nacional el problema es que no aparece el teclado, una vez que uno ingresa su número de cédula. Esto no me preocupa porque prácticamente no necesito ese sitio.

    Sin embargo, sigo con el problema de no poder firmar un documento desde LibreOffice. Mientras tanto, lo estoy resolviendo haciendo la conversión del documento a pdf y utilizado el “firmador”.

    Por último, no he logrado verificar la firma digital en un documento que alguien me envíe.

    Saludos y muchas gracias.

    1. Francisco de la Peña:

      Hola Sergio,

      Una vez me sucedió que tenía una cuenta antigua que mantenía el antiguo teclado Java y tuve que pedir que migraran la cuenta al nuevo sistema, siendo quizás el mismo caso. Además, cuando inicio Firefox sin la tarjeta conectada, si tengo la clave de teclado bloqueada, no me aparece el enlace de Firma Digital bajo el teclado virtual.

      En cuanto a validar documentos, ¿qué es lo que no le está funcionando y dónde?

      Saludos.

Responder a Allan

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