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 MICITT (CA raíz nacional) y Banco Central (CA SINPE) en los sistemas operativos Debian y Ubuntu.
Las instrucciones están diseñadas para las distribuciones mencionadas previamente. Si se desea utilizar en otras distribuciones, existen las guías sobre cómo instalar Firma Digital de Costa Rica en Fedora, Red Hat Enterprise Linux y CentOS, cómo instalar Firma Digital de Costa Rica en openSUSE y SUSE Linux Enterprise y cómo instalar Firma Digital de Costa Rica en Manjaro (Arch Linux).
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
En el caso de Ubuntu 22.04, hay que eliminar la versión preinstalada de Firefox porque no es compatible con Firma Digital en la actualidad y debe reemplazarse por una versión de un repositorio PPA (en caso de que sea necesario, realizar copia de seguridad de los datos de Firefox como marcadores, contraseñas guardadas, etc. antes de realizar este paso):
sudo snap remove --purge firefox sudo apt remove --purge -y firefox sudo add-apt-repository -y ppa:mozillateam/ppa sudo sh -c 'echo "Package: firefox*\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 501" > /etc/apt/preferences.d/mozillateamppa' sudo apt update sudo apt -y install firefox firefox-locale-es
- Instalar 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 apt -y install p11-kit pcscd binutils bubblewrap sudo icedtea-netx sudo systemctl enable --now pcscd.socket
En el caso de Debian, si se instaló definiendo contraseña para root, el usuario predeterminado no tendrá poder para usar los comandos con sudo de forma predeterminada. Se puede 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_Rev26.zip. Se creará una carpeta llamada Firma Digital. Se asume que el archivo zip se ha descargado en la carpeta de descargas:
cd $(xdg-user-dir DOWNLOAD) unzip sfd_ClientesLinux_DEB64_Rev26.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 $(xdg-user-dir DOWNLOAD)/sfd_ClientesLinux_DEB64_Rev26/Firma\ Digital/Certificados/* /usr/local/share/ca-certificates/ for i in /usr/local/share/ca-certificates/*.cer do sudo mv "$i" "/usr/local/share/ca-certificates/$(basename "$i" .cer).crt" done for file in /usr/local/share/ca-certificates/*.crt do sudo openssl x509 -inform DER -in "$file" -out "$file.tmp" 2> /dev/null done sudo find /usr/local/share/ca-certificates/ -type f -empty -delete for i in /usr/local/share/ca-certificates/*.tmp do sudo mv "$i" "/usr/local/share/ca-certificates/$(basename "$i" .tmp)" done
- 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 $(xdg-user-dir DOWNLOAD)/sfd_ClientesLinux_DEB64_Rev26/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 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> <ChipDoc> <Cards> <ChipDocEMV> <ATR type='hexBinary'>3BEA00008131FE450031C173C840000090007A</ATR> <ATRMask type='hexBinary'>FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</ATRMask> </ChipDocEMV> </Cards> </ChipDoc> </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 --ro-bind /run/pcscd /run/pcscd p11-kit remote /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
- Crear un fichero para desactivar la línea disable-in: p11-kit-proxy del fichero /usr/share/p11-kit/modules/p11-kit-trust.module mediante la sobrescritura de esta línea de configuración a través de un fichero con el mismo nombre en la ruta /etc/pkcs11/modules/:
sudo mkdir -p /etc/pkcs11/modules/ sudo sh -c 'echo "disable-in:" > /etc/pkcs11/modules/p11-kit-trust.module'
Es importante este último paso. De lo contrario, en versiones más recientes de la distribución, en Firefox aparecerá un error de certificado no confiado en cualquier sitio que utilice conexión por HTTPS.
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 Agente GAUDI (conocido anteriormente como 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.
Gracias, el método descrito en la página de soporte no sirve, sin embargo este sí
lo felicito, excelente artículo y funciona a la perfección.
saludos.
Me funcionó a la perfección
muchas gracias muy útil
Es necesario seguir la guia de instalacion de http://www.soportefirmadigital.go.cr en sistemas linux, en mi caso Ubuntu 18.04? O solamente con esta guia?
Qué version de Firefox es soportado?
Gracias
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 Agente GAUDI o con otras implementaciones alternativas. Saludos.
Gracias por su respuesta! Y Cómo valido que el sistema operativo esté detectado mi Athena smartcard?
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.
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!
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.
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?
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.
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
Tomado de aquí:
https://groups.google.com/forum/#!topic/jsignpdf/qo0SqnMDPhA
Los archivos son: conf.properties y pkcs11.cfg dentro de JSignPDF. En el post anterior se eliminaron algunas \n
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.
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.
Solo demasiadas gracias… de nuevo.
Y el firmador funciona a la perfección.
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.
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!
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).
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.
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
Hola Juan Carlos, al final de la guía se sugiere una herramienta para firmar que está en el sitio web https://firmador.libre.cr 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.
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.
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
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.
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.
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.
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
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.
Muchas gracias, Francisco, por su pronta respuesta. Estoy usando Ubuntu 18.04.
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 ejecutasudo apt -y install --reinstall firefox
, luego ejecutasudo 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.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.
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.
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).
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.
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.
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.
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.
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.
Hola Francisco,
Muchísimas gracias por su información sobre firma digital bajo Linux. Me ayudó enormemente.
Ahora es Mayo del 2024, y noto que varios (pero no todos) de sus ajustes están incorporados en los paquetes oficiales. Específicamente, el enlace simbólico a libASEP11.so en /usr/lib/x64-athena/ no es necesario porque el instalador oficial pone una copia de libASEP11.so ahí. Pero pone un enlace simbólico en /usr/lib/ que apunta a una versión diferente de libASEP11.so (en /x86-athena). Modifiqué el enlace simbólico para que apuntara a la versión que recomienda usted.
Después de seguir sus instrucciones, todo me funciona menos la firma desde Libreoffice. Es muy extraño, porque veo mi certificado en Settings/Certificates/View Certificates de Firefox. La verdad es que con su excelente herramienta “firmador,” no me hace mucha falta firmar desde LibreOffice, y pienso dejar las cosas así.
Gracias, Lloyd. Correcto, en la actualidad Soporte Firma Digital incluye paquetes DEB y RPM de PINtool que ubican esa librería y documenta adecuadamente cómo instalarlo. Además PINtool es útil para diagnóstico y resolución de problemas. Crear un enlace simbólico a la inversa efectivamente es válido también. En cuanto a la situación que menciona de LibreOffice, recientemente agregué un comentario que podría intentar con el perfil: https://fran.cr/instalar-firma-digital-costa-rica-gnu-linux-ubuntu-debian/#comment-411
De todos modos como bien indica, el firmador libre puede firmar documentos de LibreOffice directamente, sin necesidad de convertirlos a PDF.
Saludos.
Hola Francisco. Gracias por la respuesta.
Todo comenzó para mi bien con la firma digital, usando su guía, pero luego dejó de funcionar. (Pero al fin logré que funcionara, aquí explico.)
Uso Debian 11. Al principio, probé la firma digital tanto en Firefox ESR 115.0 como en Chrome 124.0.6367.60 (Official Build) (64-bit). Estas son las últimas versiones de estos navegadores en Debian 11. Todo funcionó bien. Lo probé con la herramienta de prueba de firmadigital.go.cr, tanto autenticar como firmar.
Luego, uno o 2 días después, dejó de funcionar. En el sitio del BNCR, cuando intenté entrar con la firma digital, me dijo “El cliente consultado no posee un certificado digital habilitado.” Tampoco sirvió con la herramienta de firmadigital.go.cr. Revisé mi configuración vez tras vez. No pude encontrar nada.
Pero sí sirvió con la herramienta “Firmador.” (Una pista importante que desafortunadamente no pude descifrar!)
Había notado en su guía que había que instalar una versión de firefox del PPA de “mozillateam.” No pude hacerlo, porque no se instala en Debian, sólo Ubuntu. Tampoco pude averiguar cuál versión de Firefox utiliza ese PPA. Creía que no importaba mucho, porque a mí me sirvió la firma digital al principio con versiones recientes de Firefox y Chrome.
AL FIN, me fijé en los “Requisitos” alistados en esta página: https://www.firmadigital.go.cr/verificacion/Verificacion.aspx Ahí dice Google Chrome versión 92, y Mozilla Firefox version 91!
Escogí instalar Firefox version 91, con su propio “profile”, conservando mi Firefox ESR.
Con esta versión de Firefox funciona! Espero que continue funcionando.
La lección para aprender es que aunque la firma digital en sitios web pueda funcionar al principio con versiones recientes de Firefox y Chrome, no necesariamente va a continuar funcionando. De verdad tiene que usarse, aparentemente, las versiones antiguas de los navegadores que aparecen en la página https://www.firmadigital.go.cr/verificacion/Verificacion.aspx (o del PPA que usted recomendó para Ubuntu.)
P.D.
Mi anterior mensaje llega a una conclusión errónea. Descubrí que lo único que sirve para mi con Firefox v91 es la prueba en la página https://www.firmadigital.go.cr/verificacion/Verificacion.aspx. Ahí autentica y también firma. También funciona cuando lo hago con Chrome 124.0.6367.60. Parece que no tiene nada que ver con la versión.
No sirve para autenticar con el BNCR, ni tampoco en https://www.soportefirmadigital.com/sfdj/validate.aspx?lang=es
Tal vez será mejor quitar mi anterior mensaje, ya que lo de las versiones aparentemente no es mi problema. Agradecería cualquier ayuda.
Buenas Lloyd, algunas pruebas es posible que no dependan de autenticación de navegador sino de un firmador externo llamado Agente GAUDI. En Linux viene en versión DEB o RPM y se instala por aparte de lo indicado en esta guía del blog, de hecho esa parte debo actualizarla para aclarar ese paso para verificar la funcionalidad. Hoy día los bancos BNCR, BCR y Popular funcionan con este mecanismo, teniendo el Agente GAUDI iniciado en segundo plano puede iniciar sesión. En el BNCR es ingresando su identificación y luego haciendo clic en el icono que hay encima que es un logotipo de una “f” y una “d” que simbolizan un candado (lock).
He detectado que desde hace tiempo el BNCR tiene un defecto bastante molesto: si intenta iniciar sesión en la App BN Móvil con contraseña tradicional teniendo habilitada firma digital, la autenticación con Firma Digital con GAUDI deja de funcionar y debe llamar contactar con el BNCR (intente chat, correo o llamada primero) para que se lo restauren y pueda habilitarlo de nuevo con firma digital. Suena absurdo pero parece estar sucediendo desde que en el BNCR migraron al sistema GAUDI.
Saludos.
Hola Francisco, y gracias por responder. Pues, es necesario solicitar que habiliten la firma digital para que funcione con BNCR? Nunca hice eso. Y si no voy a poder usar la autenticación por contraseña en el app BN Móvil habiendo habilitada la autenticación por firma digital, no me va a servir usar firma digital con BNCR, porque ocupo usar el app con frecuencia y no tengo como usar firma digital en el app. No es importante; sólo intenté autenticar con firma digital en BNCR para hacer prueba.
Por el otro lado, como indiqué antes, en el navegador Chrome 124.0.6367.60, la prueba de la página https://www.soportefirmadigital.com/sfdj/validate.aspx?lang=es también falla. Voy a detallar lo que veo. 1) introduzco el número de serie de la tarjeta 2) inserto la tarjeta, y aparece lo notificación de Gaudi del inicio de la sesión 3) hago clic en Continuar (firmador en Java). Veo una ventanita con título “Sign in to Security Device”, con el mensaje “Please sign in to Bit4id JCOP3 to authenticate to http://www.soportefirmadigital.com with your certificate” 4) Introduzco el PIN de la tarjeta y hago clic en “Unlock.” Aparece otro popup que dice “Select a Certificate to Authenticate yourself to http://www.soportefirmadigital.com:443“. Abajo veo mi certificado, con “issuer” CA SINPE PERSONA FISICA v2. Es el único certificado y ya está seleccionado, por lo tanto, 5) hago clic en “OK”. Luego dice “Ha ocurrido un error. 403.16 – Client certificate is untrusted or invalid.”
Lo mismo pasa en Firefox ESR 115.10 y Firefox 91.
Ocupé firmar un documento en procomer.go.cr, para renovar un carnet de exportador. No lo pude hacer, me imagino por el mismo problema. Al fin lo tuve que hacer con una computadora Windows 10. (Pero ahora, escribiendo esto, probé con el mismo enlace de procomer que usé para firmar en Windows 10, con Chrome y logré autenticar con la firma digital. Me dio el mensaje que ya había sido firmado el documento. Parece que iba a funcionar! Lo único que he hecho últimamente es cambiar OpenJDK por Java de Oracle, y luego, al ver que no ayudó nada, volví a OpenJDK.)
Lo que ocupo hacer ahora en registrarme en el sitio registrelo.co.cr, que sólo acepta firma digital. Cada vez que intento, se descarga un archivo FirmaDigitalInstaller.jar. Sé que debe ejecutarse en el browser, y tengo “icedtea-netx” instalado, pero no se ejecuta. Intenté ejecutarlo manualmente, y arrancó un daemon FirmaDigitalServer en puerto 50007. Pero la página de registrelo.co.cr no lo pudo usar. Intenté también con Firefox ESR 115 y Firefox 91.
Me siento muy frustrado, y me imagino que puede ser difícil para usted ayudarme. Le agradezco todo lo que ha hecho para lo comunidad de usuarios de Linux.
Gracias Lloyd, existe una app para Android e iOS que en teoría se puede usar con la app de BN Móvil que se llama GAUDI Móvil. Esta app funciona con un certificado diferente que aparentemente se almacena de manera privada en el dispositivo y no requiere PC para firmar, sin embargo si cambia algún día de teléfono reinstala el sistema operativo de fábrica hay que volver a solicitar el certificado (cuesta 10000 colones). Como en el caso de las tarjetas, puede tener más de 1 a la vez, algo que puede ser conveniente en caso de vencimiento o daño de dispositivo que contiene el certificado o la tarjeta. Este certificado lo puede solicitar desde casa con su tarjeta de Firma Digital. En mi caso no lo he podido probar todavía porque la app aunque está en Google Play disponible para Android 7 y superior, al abrir la app muestra un mensaje indicando que mi versión de Android es demasiado antigua y debo actualizar a una versión más reciente (tengo Android 10). Sobre la versión para iOS desconozco cuáles son los requerimientos.
En cuanto a la validación con certificado en el sitio web del BCCR mediante autenticación web (TLS Client Certificate Authentication), creo que es problema de ellos y que no tienen la aplicación web actualizada con los certificados intermedios requeridos. Puede intentar consultar a Soporte Firma Digital en ese sitio web (tienen soporte por chat, teléfono y email, el costo del certificado es para cubrir los costos del servicio de soporte) en ese caso.
***
No sé si Procomer utiliza este mecanismo web, es solo de autenticación y no de firma. Las tarjetas de firma digital tienen 2 certificados. El de autenticación es para estos casos que permiten iniciar sesión demostrando su identidad. El certificado de firma es el que se utiliza para firmar documentos y no se pudede ugilozar con el navegador web sin una herramienta externa (como el Agente GAUDI o esas aplicaciones Java que a veces se lanzan desde un JAR directamente o bien desde Java Web Start o JNLP).
***
El caso del JAR del sistema Regístrelo del Ministerio de Salud creo que debe ser parecido al del sistema tramiteya.go.cr (tengo una guía en este blog sobre cómo intentar usarlo pero parece que ya no funciona), por el nombre del JAR parece ser el que desarrolló una empresa llamada SOIN y la última vez que intenté probarlo funcionó de manera intermitente o directamente falló tras múltiples intentos. A pesar de tener la configuración de enlaces simbólicos tras decompilar las clases Java del JAR, parece que es problema de la aplicación, no recuerdo si funciona en Windows y no he probado Regístrelo porque no tengo que registrar productos, pero sería bueno saber si funciona en Windows. Al menos es posible usar Firma Digital en una máquina virtual con Windows y redirigiendo el USB. Soporte Firma Digital no ofrece soporte en máquinas virtuales pero tengo otra guía sobre cómo usarlo, hay que desactivar temporalmente el servicio pcscd en la máquina host para liberar su uso para poder usarlo en el USB redirigido de la máquina virtual.
***
Es realmente frustrante. Otro caso es cuando no lanzan versiones oficiales para Linux de SICOP pero igualmente funciona. También se puede iniciar sesión en el banco BAC desde Linux con su app que solo está para Windows y macOS, creo que publicaré un artículo sobre cómo hacerlo, hay que parchear una clase java decompilándola y recompilarla de nuevo porque tiene un bug. Es una lucha continua contra el mal soporte de las aplicaciones de firma en general y en particular en algunos sistemas operativos.
***
Por casos así y por necesidad personal creé el proyecto “Firmador”, porque era necesario disponer de una herramienta realmente multiplataforma para firmar y que funcionara sin tantos problemas. Poco a poco va ganando reconocimiento y está logrando algunas integraciones en el sector público y privado, en algunos casos está logrando reemplazar a firmadores que ya no servían.
***
El Agente GAUDI del Banco Central por lo general funciona bien, iniciar sesión en bancos es efectivo (algo lento e incómodo el exceso de pasos) pero suele funcionar mejor que iniciar sesión desde navegador en bancos donde funcionaba a medias (como en el Banco Popular). El caso del BNCR es bastante molesto con el tema de BN Móvil, ojalá pueda intentar GAUDI Móvil para ver si resuelve su caso de uso, sería bueno saberlo. También saber si Regístrelo funciona en Windows.
Saludos.
Volvieron a actualizar el cliente de Linux ahora vamos por la versión 13
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.
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.
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.
Hola Francisco.
Primero que todo, muchas gracias por todas las herramientas de firma digital, que he estado usando desde hace buen tiempo en Ubuntu 18.04 y me ha salvado bastante durante esta pandemia.
Acabo de intentar instalar en Kubuntu 20.04, y lamentablemente pasó el problema de que mi navegador (uso google-chrome) ya no encuentra ningún certificado. Ya comenté la línea #disable-in: p11-kit-proxy y también hice lo que le indicó a Sergio Morales más arriba. Logré navegar en Firefox pero Chrome sigue reportando NET::ERR_CERT_AUTHORITY_INVALID.
Ya intenté en firma-digital.module usar disable-in:google-chrome google-chrome-stable sin suerte…
¿Alguna recomendación?
Buenas Pablo, gracias por todo. A partir de Ubuntu 20.04 LTS creo que Chrome podría haberse instalado vía Snap, de este modo puede tener cierto aislamiento por su naturaleza de contenedor que no comparta acceso con los certificados del sistema cuando se usa con p11-kit-proxy. Otra hipótesis es que exista otra interacción con alguna librería que requiera ajustes. La causa de fondo es el reemplazo de p11-kit-proxy.so, que actúa como un reemplazo de la librería libnssckbi.so de NSS, que es un componente de Mozilla para acceso a módulos de seguridad (PKCS#11 en nuestro caso) usado por Chrome y otros, pero puede haber varias versiones más de esta librería por el sistema, incorporadas con Chrome que podría estar en una ruta no manejada, o simplemente que la versión de Chrome sea incompatible por alguna razón todavía no contemplada. De todos modos si estuviera usando su propia librería creo que no aparecería este error.
Ya que esta interacción que menciona no funciona con el disable-in, no se podría evitar agregando la ruta a libASEP11.so manualmente de forma provisional. Intentaría ejecutar el comando which google-chrome para comprobar si google-chrome es el nombre del binario final o si se trata de un shell script que apunta al binario. Desconozco si se está usando Chrome desde el repositorio de Google y no desde Snap, o tal vez sea al revés, si se tratara de un Snap, intentar buscar un repositorio Chrome o Chromium de terceros que no sea Snap (ojo, ahora Chromium no se integra con muchas APIs de Google que quizás use) para ver si el problema se resuelve.
Trataré de investigar la situación actual con Ubuntu y derivados (Mint) con las diferentes opciones de Chrome y Chromium porque en ocasiones se requiere utilizar este navegador cuando una extensión de Firefox de fake user agent no resulta efectiva para simular Chrome para sus requerimientos. En cualquier caso, si logra algún hallazgo mientras tanto agradecería la información. Otra alternativa es intentar usar una distro que no tenga estas incompatibilidades (Debian, Fedora, etc.). Saludos.
Hola de nuevo Pablo:
Se me olvidaba que se puede desactivar el reemplazo de p11-kit-proxy para este tipo de casos, explicado en este otro comentario:
https://fran.cr/instalar-firma-digital-costa-rica-gnu-linux-ubuntu-debian/#comment-76
En él se desactiva el servicio y se reemplaza el enlace simbólico con el respaldo. La desventaja es que se pierde la capacidad de configurar la librería para múltiples usuarios, teniendo que configurar los navegadores de manera individual, pero podrá navegar sin el problema de certificados desconocidos. La manera individual de configuración del módulo PKCS#11 es la que se explica en la documentación de Soporte Firma Digital, que se configura desde las preferencias del navegador, que también explico para Firefox en ese comentario. Saludos.
Buenas de nuevo, tras releer no me quedó claro si lo que revisó de la respuesta a Sergio se refería a esa en particular, pero para detallarla mejor:
– El script realiza la sobrescritura de 4 librerías que podrían existir:
/usr/lib/firefox/libnssckbi.so
/usr/lib/firefox-esr/libnssckbi.so
/usr/lib/thunderbird/libnssckbi.so
/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
Deberían restaurarse todas ellas desde el .bak manualmente, que se encontrarán en la misma ruta que los enlaces simbólicos. En caso de que restaurando firefox o chrome no sea efectivo, chrome podría estar usando alguna de estas que no se restauraran automáticamente. Hecho esto, el problema de NET::ERR_CERT_AUTHORITY_INVALID debería desaparecer. Si no fuera así, agradecería me indicara para hacer más pruebas.
Muchas gracias Francisco, por la prontísima respuesta, y disculpas por no responder antes, pero anoche no me esperaba una respuesta suya tan tarde ;-).
Estoy peleando con esto. Recién rearrancada la computadora no puedo hacer nada ni con firefox ni con chrome (de hecho estoy en otro computador porque sin ningún browser funcionando no puedo hacer mucho ahí).
Kubuntu todavía usa más apt que snap, y mi chrome sí está instado desde un paquete deb. El paquete en sí no trae bibliotecas compartidas propias, excepto unas relacionadas con swiftshader, libEGL y libGLESv2 que no tienen nada que ver con esto. Así que sí debe estar usando otros enlaces por ahí…
La aplicación que muestra un ps aux | grep chrome es /opt/google/chrome/chrome, así que también intenté desabilitar solo con chrome y con toda la ruta, pero no logra encontrar los certificados.
Revisé con lsof | grep nssck y no muestra que se esté usando esa biblioteca. Por otro lado lsof | grep p11-kit sí muestra que chrome está usando /usr/lib/x86_64-linx-gpu/libp11-kit.so.0.3.0.
Mi primer intento para revivir al menos firefox ha sido:
> sudo systemctl disable –now p11-kit-proxy-updater
pero no hace nada.
Voy a seguir intentando revivir primero firefox y luego veré que pasa con chrome.
Hola Francisco,
basta con restaurar los 4 enlances que hace el script update-p11-kit-symlinks, para que chrome y firefox vuelvan a funcionar… Creo que me voy a quedar sin firma en el browser, y usar por el momento solo el firmador suyo en java. En otro momento juego un poco más a ver si logro que esto funcione mejor. En todo caso parece que chrome sí está usando el reemplazo de libnssckbi.so.
Muchas gracias Pablo por confirmar y por los datos. En este caso todavía es posible configurar libASEP11.so de forma manual para el usuario local por el método tradicional de agregar los certificados y el libASEP11.so desde las preferencias. Chrome creo que no dispone de esta opción desde configuración, sin embargo confirmo en otras distros sí funciona cuando el p11-kit-proxy es funcional. En teoría Chrome, al igual que LibreOffice es capaz de leer la configuración del usuario local de Firefox en $HOME/.mozilla/, por lo que quizás tras configurar Firefox también pueda usarse en Chromium. Si hay más usuarios o perfiles con Firefox en el sistema hay que repetir la operación para cada uno.
Saludos.
La forma tradicional es la que explican en SoporteFirmaDigital, en este video, a partir del 2:20 https://www.soportefirmadigital.com/sfdj/guias/IFD_Linux.mp4
Se ven los pasos de agregar certificados y módulo PKCS#11. Luego se ve lo de la prueba con el firmador del BCCR que no es relevante con respecto a esto, ya que no depende del navegador.
Hola, ya había tenido operando la Firma Digital en Mint pero estaba revisando y no me funcionaba.
1. pcsc_scan sí me detecta el scanner y la tarjeta.
2. La prueba en el BCCR no me detecta el dispositivo ni en Firefox ni en Chromium.
3. En Firefox no pareciera que lo detecta en los dispositivos de seguridad.
4. Cuando corro el firmado me da este error:
Error: java.lang.NoSuchMethodException Detalle: sun.security.pkcs11.SunPKCS11. (java.io.InputStream) Agradecemos que comunique este mensaje de error a los autores del programa para detallar mejor el posible motivo de este error en próximas versiones.
Hola Ramón, ¿qué versión de Linux Mint está utilizando? ¿Utiliza el entorno de escritorio Cinnamon? A partir de esta información podría intentar reproducir la situación localmente bajo el mismo escenario.
La prueba del BCCR puede que hoy en día sea mediante el Agente GAUDI, anteriormente conocido como Firmador BCCR, si es el caso requerirá que el Agente GAUDI esté iniciado y según en qué circunstancias podría no arrancar por falta de algunas extensiones de GNOME Shell (para Cinnamon), aunque no he probado el Agente GAUDI en Mint para comprobarlo por ahora. El firmador del BCCR depende de una característica de icono en la bandeja que desconozco si Cinnamon la incorpora de serie o si requiere una extensión, sin ella podría causar una excepción y no iniciarse la herramienta. Actualización: El Agente GAUDI ha corregido esta limitación.
En cuanto a los dispositivos de seguridad en las preferencias de Firefox, si se siguió la guía, debería como mínimo aparecer el lector. Conviene iniciar Firefox con el lector y tarjeta conectadas antes de verificar. En el caso de Firefox que no sea de paquete tradicional sino de origen Snap o Flatpak, es probable que no funcione porque estos modos de empaquetar tienen menos permisos y mayor aislamiento y que haya que agregar el módulo de forma manual como se indica en las instrucciones para Linux de Soporte Firma Digital, para cada uno de los usuarios y perfiles que tenga la máquina.
Con respecto al último mensaje de error, es un tema diferente. Ese error es del Firmador libre. En este caso parece que detecta el módulo instalado pero la versión de Java utilizada o la modalidad de acceso no permiten usar funciones PKCS11. Esto puede ser por dos motivos: Si se lanza en modalidad Web Start (desde fichero JNLP lanzado desde sitio web), hay que tener instalado además de IcedTea-web, el JRE de la versión de OpenJDK 8. Adicional, es posible que tenga instaladas las versiones 11 o posteriores (16). Estas versiones por el momento causan ese error cuando se lanza desde Web Start. Si es el caso, se mitiga siguiendo la siguiente guía para forzar a IcedTea-Web a uilizar Java 8. Primero intentar ver si existe una opción para configurar javaws o icedtea-web mediante el comando update-alternatives para usar la versión 8. Si Mint no ofrece esta opción, utilizar la siguiente guía: https://fran.cr/como-seguir-utilizando-lanzadores-java-web-start-en-gnu-linux/ . La otra posibilidad es que esté intentando lanzar el firmador desde el fichero JAR (firmador.jar) con una versión del JRE de OpenJDK muy reciente. Por ejemplo en las versiones 15 o 16 no se permite acceso a módulos PKCS11 salvo que se configure de forma explícita con –add-opens y otros parámetros para acceder a estas clases. Esto está pendiente de mejora en el firmador, con previsión de corregirlo antes del 14 de septiembre, que es cuando se publique la próxima versión LTS de Java (17). Las versiones 8 y 11, que son LTS sí funcionan para cuando se ejecuta desde firmador.jar.
Saludos.
Hola Francisco,
El firmador lo estaba abriendo desde la Web Start (archivo JNLP), al abrir el firmador.jar todo funciona satisfactoriamente. Por lo que puedo firmar PDFs y ya puedo trabajar con la firma.
Trataré de ver como habilito la firma digital en Firefox por si lo requiero en el futuro.
En cuento al Mint yo uso Xfce, no me acuerdo pero supongo que tengo que librerías de Gnome instaladas para poder usar algún software. Si requiere que haga pruebas para darle soporte a su proceso de instalación me avisa.
RELEASE=20.1
CODENAME=ulyssa
EDITION=”Xfce”
DESCRIPTION=”Linux Mint 20.1 Ulyssa”
Hola Francisco tengo el mismo problema con Linux Mint 20.2 xfce. Cuando abro el firmador BCCR me aparece que no detecta ningún escaner. No sé si es por el entorno de escritorio o por distribución. En Debian 10 y Ubuntu 20.04 me funciona bien.
Hola Norman, hace tiempo que no pruebo el firmador del BCCR, pero este tiene sus particularidades, por ejemplo utiliza su propio Java. El problema del firmador del BCCR es que tal vez no cargue si no está disponible la bandeja de iconos en el entorno de escritorio, ya que me he topado que si falla en detectarla el programa no se inicia. Sugeriría lanzarlo desde una terminal para analizar si la herramienta está devolviendo algún tipo de excepción y la analizamos.
Buenas noches Francisco. En primer lugar agradecido por su trabajo y aporte para Costa Rica. MI CASO: La firma digital me sirvió en en el Banco Nacional hasta Debian 11 y Linux Mint 20, pero ahora que instalé Debian 11 no me sirve la firma digital en el Banco. Agradezco nos ayudes a los que no somos informáticos y amamos el software libre. Estaremos atentos a la actualización para que sirva en Debian 11 y Firefox. Gracias de Nuevo. Bendiciones 03-10-21
Buenas noches Warner y muchas gracias por el apoyo. Apenas tuve tiempo por el momento para veificar hace unos días que la guía no estaba funcionando con Debian 11. El primer motivo detectado por el que no funciona esta guía en Debian 11 es porque de forma inexplicable el mantenedor del paquete util-linux en Debian eliminó el programa rename (rename.ul en Debian hasta la versión 10). A pesar de críticas y peticiones de varios usuarios para reponerlo, hizo caso omiso. Esto causa la rotura de esta guía. Espero poderla actualizar pronto pero el script será significativamente más complicado, por lo que ocupo un poco de tiempo para realizar el desarrollo y pruebas. Muchas gracias por la paciencia y disculpas por las molestias.
Saludos de nuevo Warner:
Se ha actualizado la guía, ahora debería poder funcionar en Debian 11 también.
Si encuentra algún problema durante el proceso me avisa.
Saludos y gracias por el reporte.
Buenas tardes Francisco, quisiera empezar agradeciendo todo su aporte para los usuario GNU/LINUX que nos has brindado con el tema de Firma Dígital. Comentar que con Debian 10 todo me funcionó muy bien, ahora utilizo Ubuntu 20.04 y Linux Mint 20.2 en los cuales una vez realizada toda la guía a la hora de utilizar el programa del Firmador me aparece el error que no hay lectores de tarjetas conectados. ¿Sabe qué podría estar generando este error?
Buenas tardes Norman, muchas gracias. ¿Esto solamente sucede en con algún firmador en particular como el Agente GAUDI? ¿Probó con el firmador libre de https://firmador.libre.cr para comprobar si no es problema del lector, tarjeta o instalación sino algún problema con otra herramienta que acceda a la tarjeta?
Me ha aparecido este error:
p11-kit list-modules
bwrap: Can’t find source path /var/run/pcscd: No such file or directory
p11-kit-trust: p11-kit-trust.so
library-description: PKCS#11 Kit Trust Module
library-manufacturer: PKCS#11 Kit
library-version: 0.23
token: System Trust
manufacturer: PKCS#11 Kit
model: p11-kit-trust
serial-number: 1
hardware-version: 0.23
flags:
write-protected
token-initialized
Y con los comandos pcsc_scan y sudo systemctl status pcscd.socket me aparece:
SCardEstablishContext: Service not available.
Además:
Unit pcscd.socket could not be found.
Parece que pcscd no se está ejecutando y quizás no está instalado. Voy a agregarlo a la lista de la guía, que parece que en mint no viene preinstalado por defecto.
En cualquier caso habría que instalarlo:
sudo apt install pcscd
sudo systemctl enable --now pcscd.socket
Listo, problema solucionado. Ese era el inconveniente. Muchas gracias por su excelente aporte.
Hola, el Agente GAUDI inicia en Ubuntu 20.04, pero me dice que no detecta el lector de tarjetas. Cuando lo lanzo desde la consola muestra lo siguiente:
iaik.pkcs.pkcs11.wrapper.PKCS11Exception: CKR_GENERAL_ERROR
at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.C_Initialize(Native Method)
at iaik.pkcs.pkcs11.Module.initialize(Module.java:322)
at a.d.a(TarjetaControlador.java:26)
at Interops.InvocadorPKCS11.cargueElPKCS11(InvocadorPKCS11.java:50)
at Interops.InvocadorPKCS11.(InvocadorPKCS11.java:45)
at Interops.InvocadorPKCS11.Instancia(InvocadorPKCS11.java:38)
at a.a.(Lectores.java:22)
at a.a.a(Lectores.java:28)
at Sesiones.a.a(Aplicacion.java:44)
at Sesiones.a.(Aplicacion.java:26)
at InicializadorCliente.Inicializador.(Inicializador.java:49)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at bccr.c.e.c(ManejadorDeJarClienteFirmador.java:68)
Hola Francisco, ese error puede aparecer por varias causas, incluyendo que no esté levantado el servicio pcscd, o que el lector y tarjeta tengan algún problema de conexión. Sugeriría reconectar lector y tarjeta a la computadora y reiniciar el servicio pcscd mediante:
sudo systemctl restart pcscd.socket
Y probar de nuevo si el agente GAUDI detecta la tarjeta. Si el problema persiste se pueden investigar otras causas. Saludos.
Fran
Muchas gracias por el procedimiento. Es inaudito que ya con varios años de usar firma digital en Costa Rica todavía los responsables no tengan un instalador que solucione todos estos problemas.
En mi caso estoy usando Kubuntu 22.04 y ejecute todo el procedimiento descrito pero me encontré con un problema. Todas las Autoridades de CA de Chrome se perdieron e igualmente las de Firefox. Ejecute el ultimo paso como lo indicas pero parece que no funciona correctamente pues aun asi se perdieron todos los datos de las autoridades. En lo que respecta a la instalación de las librerías el procedimiento funciona correctamente.
Hola Randall, con gusto.
los instaladores de Soporte Firma Digital tienen una guía pero está pensada para instalación para cada usuario. Con la llegada de los snaps a Ubuntu (y Kubuntu) se hizo más complicado. Tal vez el paquete de Chrome también sea snap y haya que proceder parecido como en Firefox. Probé en Ubuntu 22.04 y me sirvió pero tal vez haya habido cambios, revisaré en Kubuntu 22.04 en una instalación limpia para ver si logro reproducir el problema y le aviso. Mientras tanto recomiendo desactivar los servicios que restauran los enlaces simbólicos y restaurar el respaldo de libnssckbi. Probablemente actualice la guía para utilizar un nuevo método con Firefox que resulta eficaz pero con Chrome habrá que investigar alternativas. Le avisaré por aquí y por correo. Saludos.
Felicitarlo Francisco por su aporte a la comunidad Linux y Firma Dígital Costa Rica. Es muy valioso para llegar a cada vez más usuarios de este sistema operativo.
Muchas gracias Norman, un placer poder contribuir con esta pequeña guía, que eventualmente se quiere convertir en un paquete configurador en un repositorio para facilitar la instalación. Saludos.
Hola. Quisiera saber si la version más nueva de “firmador” ya no ocupa el java, porque hasta donde sé, el java se le dejó de dar continuidad
Hola, Luis Elmer:
El Java de Oracle todavía se publica como redistribuible en la versión 8 para uso personal y parece que tendría soporte de actualizaciones hasta 2030 según Oracle. Para Linux las distribuciones utiizan OpenJDK, que es la versión libre de Java. Como alternativa al redistribuible de Oracle existen distribuciones alternativas de OpenJDK para Windows, macOS y Linux; por ejemplo: Eclipse (Temurin), IBM (Semeru), Azul (Zulu), Amazon (Corretto), Red Hat, Microsoft, etc.
Para saber cuál elegir, esta guía puede resultar de utilidad: https://whichjdk.com/
Por ahora se continúa distribuyendo el firmador como un paquete JAR único para los 3 sistemas operativos mencionados y funciona con las versiones de la 8 a la 19, ambas inclusive (las versiones soportadas oficialmente por Oracle en el momento de escribir esto son las versiones: 8 (LTS), 11 (LTS), 17 (LTS) y 19.
Cualquier otra aclaración, con mucho gusto. Saludos.
Buenas Francisco, como los demás te agradezco mucho tu aporte.
En mi caso de Mint 20.X Cinnamon me ha servido y he podido firmar un .odt correctamente con el firmador. También en el Firefox me reconoce el lector bien.
El Agente-Gaudi me aparece en el menú de aplicaciones.
Ahora mis dudas:
No he encontrado el código fuente del Agente-Gaudi. Será que es de código cerrado? Al abrirlo me pide la contrasena de mi sistema en un diálogo GUI para llevar a cabo una acutalización. Buf! No lo he introducido, pues me parece bien extrano y nunca lo he visto en Linux.
No hay otra manera de actualizar a través del terminal?
En el proceso me di cuenta de otra cosa que quisiera compartir: En la página web, donde uno tiene que descargar el software piden el número de la tarjeta “Sinpe” de la firma digital. Está bien, pero por qué tienen allí dos scripts de google agregados a la página? A Google no le importa que uso la firma digital. Google ya no es bueno. 😉
Tengo la fé de que lo puedan quitar allí, por si leen aquí. Por lo menos Google obtiene mi IP de esta manera y mi user agent. Y la página que visité que es bastante reveladora.
Otra duda: En cuánto a la seguridad del sistema, pueden poner en juego la integridad del sistema las modificaciones sugeridas aquí? Pura vida.
Buenas Tom, con mucho gusto.
El Agente-Gaudi del BCCR es de código cerrado y aunque es técnicamente posible descompilar Java con Procyon y herramientas similares para auditarlo, la licencia no lo permite en teoría.
La contraseña de superusuario probablemente la pide para actualizar porque la instalación es para todos los usuarios en /opt y ahí solamente se puede escribir con privilegios, pero si prefieres instalar la actualización manualmente, estos días están actualizando los instaladores en el sitio web de soportefirmadigital. Para instalar/actualizar puede hacerlo desde el .deb del agente gaudi directamente y se puede realizar desde la terminal con dpkg -i nombredelpaquete.deb
El número que aparece en la tarjeta es inofensivo (no sirve para pagos) y es la forma que tiene Soporte Firma Digital de comprobar si alguien tiene una tarjeta para permitirle descargar el instalador. Según indican desde el BCCR, cuando se compra un certificado, tarjeta de firma, etc. los diez mil que cuesta solicitar la pareja de certificados son para mantener el costo del servicio de soporte (adjudicado a una empresa externa llamada Netcom, abreviatura de Network Communications), que tiene centro de llamadas y coordinar las actualizaciones del instalador y por eso solo ofrecen el instalador a quien demuestre poseer una tarjeta porque ellos saben qué números de tarjetas son legítimos.
En cuanto a lo de Google, está en casi todo sitio web pero existen sistemas de bloqueo de rastreadores mediante extensiones que te podrían resultar de interés. De todos modos hasta los CDN de JS y tipos de letra se usan para rastreo hoy en día y es difícil suplantarlos aun usando extensiones como Decentraleyes.
La seguridad del sistema depende de muchos factores, pero lo indicado en esta guía realiza cambios de configuración diseñados para ser compatibles con actualizaciones de paquetes del sistema. El paquete Firefox de PPA alternativo al de Snap es de un repositorio mantenido por Mozilla. La librería privativa libASEP11.so se ejecuta con el mínimo de privilegios necesarios gracias a bubblewrap y es la versión más reciente proporcionada por el fabricante, extraída del pintool a diferencia de la versión que viene en la carpeta de Librerías del zip del instalador, que es mucho más antigua. Los mayores riesgos de seguridad de un sistema son que estén desactualizados (con paquetes vulnerables) y contraseñas débiles (si tiene servidor sshd hay constantes intentos diarios hacia IPs públicas con contraseñas comunes). Es recomendable conectar la tarjeta solo cuando la necesite usar y abrir el Agente GAUDI solo cuando lo necesite, ya que esta aplicación realiza una conexión permanente saliente hacia los servidores del BCCR cuando lo tiene abierto. Saludos.
Hola, otra vez yo.
Entonces me sirvió, pero ya no.
Hice actualizaciones según la guía.
Lo que está bien:
– IDProtectManager reconoce todo. En el Bit4ID veo Certificado y Llaves sin errores.
Lo que no sirve:
– https://www.firmadigital.go.cr/verificacion/Verificacion.aspx – allí me tira:
==============================
No se logró realizar la autenticación por el siguiente motivo.
El suscriptor con la identificación 1355666444, no se encuentra conectado a ninguno de nuestros canales:
Agente GAUDI.
GAUDI Móvil.
Más información en la Guía de uso de GAUDI.
=====================================
– Tiene menos de 4 años lo que se considera el máximo de tiempo de validez.
Ahora se me ocurre que acutalicé la cédula de residencia, ya que se me había vencido. Pero ahora está al día y renovada.
Será que hace falta ir a la oficina otra vez? No puede pasar la información de migración a los entes involucrados?
Con quien se podría pedir la actualización de remoto?
Bueno, voy a probar aquí, a ver que me dicen. Dejo esta información por si a alguien más le pasa lo mismo.
Gracias de antemano.
Ya lo solucioné!
Al comprobar la version del Agente GAUDI me di cuenta que era version 16
=============
dpkg –list | grep gaudi
ii agente-gaudi 16.0 amd64 Agente-GAUDI del Banco Central De Costa Rica.
=============
Entonces bajé el paquete sfd_ClientesLinux_DEB64_Rev26.zip otra vez de https://soportefirmadigital.com y lo instalé así:
================================
~/Programs/Firma-digital/sfd_ClientesLinux_DEB64_Rev26/Firma Digital$ bash -x lib.sh
sudo dpkg -i agente-gaudi_20.0_amd64.deb
==========================
Lo mismo con esto
=========================
sudo dpkg -i idprotectclient_7.24.02-0_amd64.deb
Otra duda:
Hay alguien aquí quien puede loggearse a la págia del banco BAC Costa Rica con este setup?
Al leer esto se ve que podría hacer falta instalar la *.exe de ellos para esto.
https://www.baccredomatic.com/es-cr/personas/landing/firma-digital
Claro que no es una opción para los usuarios de Linux.
Qué bueno que le sirvió. Efectivamente, versiones relativamente antiguas de Agente GAUDI ya no actualizan a las versiones más recientes, ya me han consultado bastantes personas al respecto y creo que está generando bastantes consultas a Soporte Firma Digital.
En cuanto a lo del BAC, cuando intenta iniciar sesión con Firma Digital, sin o tiene la aplicación abierta, efectivamente lo lleva a https://static.sucursalelectronica.com/ donde en el código javascript puede observar que existen 3 versiones: 2 para windows (32 y 64 bit .exe) y 1 para macOS (.dmg).
Casualmente mencioné hace unas horas en un grupo de Telegram que investigué sobre cómo acceder desde Linux y que si alguien quería probar lo que había investigado, ya que en este momento no tengo cuenta en el BAC para probar si resulta eficaz. El tema es que el parche es algo polémico porque el código fuente, aunque parece tiene intención de soportar Linux, tiene un defecto que hace que la aplicación no arranque. Para solventarlo requiere decompilar un .class a .java, modificar el código fuente y volverlo a compilar. El proceso es relativamente sencillo, por dicha. Si tiene interés en esto y tiene un correo anónimo ahí le puedo dar más detalles, ya que quizás si realmente funciona se podría publicar la guía paso a paso, sin el riesgo de publicar algo a medias que haga perder el tiempo a quien lo vaya a usar. Mi correo está en la sección de Contactar de esta página si le interesa. Para que se pueda comprobar que no es humo, lo adelanto como comentario y no como un artículo formal. Esta herramienta creo que ocupa lanzador para extensión o protocolo personalizado y diría que es viable. Si tras compilar la app la ejecuta “sola” sin parámetros se cierra sin errores y sin decir nada y creo que es normal, ocupa estar parametrizada consumiendo datos de la página mediante esa url de protocolo de comunicación en loopback. Sin mayor introducción, la parte del parche:
– Copiar los ficheros de la carpeta C:\BAC\Desktop desde su Windows o su wineprefix a su sistema operativo libre de confianza, o descomprima el dmg para Mac sin requerir windows o wine, lo extrae fácilmente con 7z x BACFirma-3.0.2.dmg y luego cd “BACFirma-3.0.2/BAC Firma.app/Contents/Java” o en el caso de la versión windows ubicarse en la carpeta lib.
– Ejecutar unzip bacdesktop.jar
– Ejecutar
– Abrir para editar net/bac/desktop/runtime/util/TaskManagerUtil.java
– Para poder recompilar requiere inicializar la definición de final Throwable exception;, solo agreguele unos null a los 4 que hay: final Throwable exception = null; (solo si decompila el jar de la versión Windows, la versión Mac no lo ocupa)
– Corregir el código, por ejemplo agregar:
tras el cierre de llave del if (OS.Validator.isWindows()) que hay en el killLastPid() (versión del jar Windows) o bien:
(versión del jar Mac).
– Compilar con java 8:
– Actualizar el jar mediante
Me cuenta si le interesa este proyecto. Tal vez se pueda contactar a la gente del BAC para que parcheen sus firmadores y pueda usarse en Linux de forma más sencilla. Saludos y gracias.
Francisco, muchas gracias por tu gran ayuda y compartir tu sabiduría. Me resultó bien la solución que me indicaste cuando en Linux Mint 21.1 no levanta el servicio de pcscd y tu solución sudo systemctl restart pcscd.socket va de maravilla.
PREGUNTA: Será necesario y en qué términos escribirles al equipo de Linux Mint? Gracias por tu opinión. Warner
Hola Warner, con gusto. No creo que sea problema de Mint 21.1, ya que esta distribución solo es una pequeña personalización sobre Ubuntu 22.04. Tal vez la línea
sudo systemctl enable --now pcscd.socket
no se aplicó correctamente. Cuando ejecutas el comando de systemctl restart pcscd.socket lo que hace en tu caso es iniciar el servicio pero al reiniciar la computadora no estará activo. La solución para corregirlo sería ejecutar ese comando mencionado. Saludos.Excelente material… Solamente tuve problemas con sudo systemctl enable –now pcscd.socket, ya que por alguna razon el comando sudo apt -y install p11-kit pcscd binutils bubblewrap sudo icedtea-netx no instalo pcscd. Para resolver el problema, tuve que ejecutar sudo apt install pcscd y luego sudo systemctl enable –now pcscd.socket. En mi caso, estoy utilizando Ubuntu 22.04.
Buenas, estuve leyendo aqui para ver si solucionaba mi problema pero no he podido. Tengo mx linux y ya tengo funcionando mi firma digital excepto con libreoffice. Cuando trato de firmar con libreoffice no me aparece ningun certificado cuando le doy “firmar documento” ni se abre nada del software de la firma. Yo agregué los certificados a firefox y a thunderbird. Tambien probe escogiendo la ruta del certificado a firefox:default. No se que mas hacer. Gracias de antemano por cualquier ayuda. Lo que necesito es firmar documentos, no importa el formato.
buenas david, para que en LibreOffice aparezca la firma, debe tener todas las ventanas de LibreOffice cerradas y abrirlo después de tener la tarjeta y lector conectados, ya que la detección de certificados levanta al iniciar LibreOffice. La detección de la configuración de certificados se basa en NSS de Mozilla, por lo que depende de que la configuración, en este caso de Firefox, tenga acceso al módulo de Firma Digital. Si puede iniciar sesión en las preferencias de Firefox y ver ahí la información, entonces en LibreOffice debería funcionar también.
Alternativamente puede utilizar https://firmador.libre.cr para firmar y validar documentos de LibreOffice (ODT, ODS, ODG) sin requerir LibreOffice. También alternativamente puede exportar sus documentos de LibreOffice a PDF y firmar los PDF desde ese firmador alternativo. Saludos.
Gracias, no sabia sobre ese firmador libre y así sí pude. Pero con libreoffice aun no. En firefox sí me funcionó cuando hice la prueba en firmadigital.go.cr
Con gusto. Tal vez la ruta al perfil NSS es un perfil diferente. En mi Firefox tengo 2 perfiles, uno termina en default-release en lugar de default, en /home/USUARIO/.mozilla/firefox/XXXXXXXXX.default-release en mi caso, y en las Preferencias de LibreOffice -> Seguridad -> Ruta del certificado -> Certificado -> Seleccionar ruta NSS… se puede actualizar la carpeta de ser necesario, Aceptar, cerrar todas las ventanas de LibreOffice y probar de nuevo. Abrir un documento, ir a Archivo -> Firmas digitales -> Firmas digitales… y ver si por fin cargan ahí. Salvo que MX Linux tenga alguna particularidad por la manera en la que está configurado, o si toma nssdb de otro lado o está en un formato obsoleto, podrían ser varios casos. También en algunos casos existe otra nssdb utilizada por otras aplicaciones, como Evolution o Thunderbird. En algunas distribuciones el tema de los módulos y certificados no está unificado, desconozco cómo será el caso de MX Linux. Revise con el comando:
a ver qué le muestra. Por otra parte, no creo que LibreOffice esté utilizando p11-kit, pero puede ver con el comando p11-kit list-modules para ver si aplicó la configuración unificada sugerida en esta entrada de blog para que funcione en otras herramientas, ya que p11-kit-proxy es una manera alternativa de integrarse con NSS reemplazando una de sus librerías internas (libnssckbi).
En cuanto al firmador libre, es un proyecto que inicié para resolver precisamente por la carencia de un firmador fácil de usar y que no requiriera mayor configuración. Como Adobe Acrobat dejó de dar soporte en Linux no había apenas alternativas (JSignPdf tampoco era muy bueno) y hoy día es una herramienta que ha logrado buena adopción en Linux, macOS y Windows y recibe contribuciones de más programadores.
Saludos.
hola, probè cambiar al otro perfil de firefox pero tampoco.
Aqui esta lo de los comandos:
$ modutil -list -nocertdb
Listing of PKCS #11 Modules
———————————————————–
1. NSS Internal PKCS #11 Module
uri: pkcs11:library-manufacturer=Mozilla%20Foundation;library-description=NSS%20Internal%20Crypto%20Services;library-version=3.61
slots: 2 slots attached
status: loaded
slot: NSS Internal Cryptographic Services
token: NSS Generic Crypto Services
uri: pkcs11:token=NSS%20Generic%20Crypto%20Services;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203
slot: NSS User Private Key and Certificate Services
token: NSS Certificate DB
uri: pkcs11:token=NSS%20Certificate%20DB;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203
———————————————————–
$ p11-kit list-modules
p11-kit-trust: p11-kit-trust.so
library-description: PKCS#11 Kit Trust Module
library-manufacturer: PKCS#11 Kit
library-version: 0.23
token: System Trust
manufacturer: PKCS#11 Kit
model: p11-kit-trust
serial-number: 1
hardware-version: 0.23
flags:
write-protected
token-initialized
Sera que se debe a que no segui las instrucciones de este blog sino que segui las instrucciones oficiales? Como me mencionò lo de p11-kit-proxy entonces me fijè en las instrucciones e instalè esa parte pero no me sirvio el comando:
$ sudo systemctl enable –now pcscd.socket
System has not been booted with systemd as init system (PID 1). Can’t operate.
Failed to connect to bus: Host is down
gracias
Hola david, por el mensaje mostrado parece que MX Linux no utiliza systemd. En el resto de guías para las demás distribuciones, todas usan systemd. No he mirado qué tipo de init utiliza MX Linux (initscripts, openrc, upstart, etc.). Habría que investigar cuál es la manera correcta de agregar pcscd al inicio del sistema en esa distribución y demás pasos específicos, pero solo el hecho de no usar systemd cambiaría sustancialmente los pasos y requerir una guía especializada para esta distribución, que logró su fama manipulando el contador de pings de DistroWatch. Saludos.
Funciona perfecto, te agradezco mucho!