La instalación de los controladores de Firma Digital Certificada en GNU/Linux es más sencilla en la actualidad. En esta guía se propone una solución básica y luego una recomendada para hacerla compatible con algunas aplicaciones.
En cualquiera de los casos, hay que instalar el paquete pcscd y descargar el paquete correspondiente .deb o .rpm desde el sitio web de Soporte Firma Digital. Para el caso de distribuciones Debian o Linux Mint más recientes se sugiere descargar la versión .deb para Ubuntu más reciente, mientras que para distribuciones .rpm es un paquete único para todas las distribuciones basadas en .rpm.
- Instalar el paquete pcscd. Puede instalarlo con el comando dnf o con el comando zypper (si se trata de openSUSE y derivados) en el caso de rpm, o con apt en el caso de .deb, o bien desde su gestor de paquetes alternativo o gráfico de su preferencia. Ejemplo (reemplace NOMBRECOMANDO con apt, dnf, zypper… según corresponda):
sudo NOMBRECOMANDO install pcscd
En algunas distribuciones puede ser necesario habilitar el servicio pcscd activado por socket, en otras viene activado de manera predeterminada:
sudo systemctl enable --now pcscd.socket
- Ir al sitio web https://soportefirmadigital.com/sfdj/dl.aspx?lang=es
- En el paso “(1) Elija el instalador deseado”, elegir en el desplegable “Usuarios Linux (RPM 64 bits)”. Siga el resto de instrucciones de la página para aceptar e iniciar la descarga.
- Tras descargarse el fichero archivador .zip, descomprimir con la herramienta de su preferencia (o con el comando unzip NOMBREDELFICHERO.zip en una ventana de terminal, desde la carpeta de descargas).
- Instalar el paquete ubicado en la ruta Firma Digital/Idopte/ que estaba dentro del .zip, el nombre del paquete suele tener en el nombre Smart Card Middleware.
- Instalar el paquete Agente GAUDI si se va a utilizar (probablemente). Está ubicado en Firma Digital/Agente GAUDI/
Eso sería la instalación básica, que se resume en instalar los paquetes pcscd, Idopte Smart Card Middleware y Agente GAUDI. Ver la sección Notas técnicas para más detalles.
Se agregarán otros detalles para instalación de Firmador libre y otras guías para compatibilidad con otros firmadores y autenticadores, como el de la CCSS y los de RACSA/SOIN (Tramite YA, Regístrelo, Receta digital). Mientras tanto se sugiere revisar los artículos de este blog al respecto.
Notas técnicas
Se recomienda reiniciar tras la instalación, en algunas distribuciones podría ser necesario si no funcionara.
En el momento de escribir la guía, en Debian 13 y LMDE 7 el .deb de Agente GAUDI puede fallar al instalar por una dependencia insatisfecha con libpcre3. Se puede forzar la instalación con el comando sudo dpkg --ignore-depends=libpcre3 -i agente-gaudi_*.deb, pero causará problemas de paquete roto al hacer apt upgrade, por lo que se sugiere modificar el fichero /var/lib/dpkg/status y buscar agente-gaudi. En el apartado correspondiente hay que eliminar el “libpcre3, ” de la línea de dependencias. No modificar nada nada más del fichero o se puede corromper la base de datos de paquetes instalados. Es recomendable respaldar ese fichero status antes de guardar la versión modificada.
Si no está instalado el paquete pcscd antes de instalar el paquete Idopte Smart Card Middleware, el instalador puede devolver un error de postinstalación, en particular con el paquete .deb, aunque quedará instalado de todos modos.
Para instalarlo en otras distribuciones que no utilizan paquetes .deb o .rpm, como por ejemplo Arch Linux, se recomienda analizar el contenido del fichero .rpm Se sugiere descargar cualquiera de los dos paquetes .rpm o .deb, aunque se sugiere .rpm por que tiene mayor simplicidad. En Arch Linux se puede utilizar rpmextract para extraer el contenido y luego armar manualmente su propio PKGBUILD. En otras distribuciones pueden realizar la instalación manual también de cada componente. Por ejemplo se podría observar el proceso de preinstalación y postinstalación del rpm ejecutando rpm -q --scripts SmartCardMiddleware en un sistema que lo tenga instalado, para conocer los detalles.
Si se va a crear o configurar una herramienta para acceder a las características de la tarjeta, como autenticadores o firmadores que requieran configuración manual, el instalador proporciona un librería con interfaz Cryptoki (interfaz de programación C normalizada), cuya ruta de instalación es /usr/lib/SCMiddleware/libidop11.so la cual ya viene preconfigurada en herramientas como el Agente GAUDI o el firmador libre. Hay que tener en cuenta que libidop11.so depende de otras librerías y ficheros de configuración y licencia, por lo que copiarla de manera individual para instalarla no es suficiente.
Si se quiere configurar en otras herramientas de manera unificada con p11-glue, se sugiere configurar un módulo de p11-kit para facilitar el descubrimiento de las ranuras (“slots”) la interfaz Cryptoki y de sus correspondientes fichas (“tokens”) como es el caso de la tarjeta. Una ruta relativamente común entre distribuciones suele ser /usr/share/p11-kit/modules/ donde se puede crear un fichero firma-digital.module que contenga la siguiente línea:
module: /usr/lib/SCMiddleware/libidop11.so
Si se va a habilitar firma digital en una máquina virtual con QEMU y KVM, hay que detener el servicio pcscd.socket en la máquina anfitrión (sudo systemctl stop pcscd.socket) antes de compartir el USB hacia la máquina virtual en caso de que el dispositivo aparezca como ocupado.
El componente fundamental que proporciona el distribuidor del controlador de tarjetas es de código cerrado y compilado únicamente para arquitectura x86_64. Si su computadora con GNU/Linux utiliza otro tipo de arquitectura diferente como ARM u otras, deberá utilizar algún tipo de emulación, por ejemplo, un contenedor en systemd-nspawn de arquitectura foránea con binfmt_misc y QEMU para no tener que emular una máquina completa.
También es conveniente instalar el/los certificados raíz nacional para que algunos validadores de aplicaciones reconozcan los certificados.
Estimado Francisco: Gracias por colectar y revisar el problema que tuve con LMDE 7. Al respecto escribiste: se sugiere modificar el fichero /var/lib/dpkg/status y buscar agente-gaudi. En el apartado correspondiente hay que eliminar el “libpcre3, ” de la línea de dependencias” PREGUNTA: cómo modifico el fichero? intenté ingresar con Nautilus, pero no me permite el acceso. Soy travieso pero no informático. Serías tan amable de orientar a este pobre usuario?. Mil gracias como siempre sos un crack en Costa Rica y el mundo. Saludos desde Cartago
con mucho gusto Warner. Para modificar ficheros que están fuera de su carpeta /home/usuario/ se requiere permisos de usuario administrativo. Para ello puede abrir la aplicación Terminal y teclear:
sudo xed /var/lib/dpkg/status
Le pedirá la contraseña. Tras ello, se abrirá el editor de texto que usa Linux Mint (se llama xed) y si aparece una franja roja que indica “Privilegios elevados”, ahora sí podrá modificar el fichero, de lo contrario estaría en modo solo lectura y no permitiría guardar cambios.
Ahí puede buscar libpcre3 para ubicarse rápidamente y hacer el cambio.
Saludos.
Buenos dias Fran, de antemano agradezco todas tus guias y ayuda. Acabo de instalar Ubuntu 24.04.3 LTS. Ya me funciona el GAUDI el ID Protect. Sin embargo cuando abro SICOP no me reconoce los certificados, me abre el cuadro de dialogo pero no ve los certificados.
Hola Fernando, el sistema SICOP utiliza su propia herramienta “Componente de firma”, puede ver cómo hacer que funcione en esta otra guía: https://fran.cr/como-usar-firma-digital-en-sicop-desde-gnu-linux/
Saludos.
Hola Fran, el mensaje que me da el cuadro de diálogo, es que no detecta tarjetas conectadas :/. Y ya no se que hacer
Hola Fernando, de esa guía, ¿consiguió ejecutar el jar del componente de firma por consola? ¿aparece algún error?
Hola Fran, al final quite Ubuntu como tal e instala Linux Mint 22.1, pero curiosamente a la hora del lanzar el componente de firma con java 8 simplemente no se ejecuta. Trate correrlo directamente desde el terminal y me dice esto :
fernando@fernando-ThinkCentre-M910t:~/Descargas$ 7z x ComponenteFirma_*.img
7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
64-bit locale=es_CR.UTF-8 Threads:4 OPEN_MAX:1024
Scanning the drive for archives:
1 file, 324534272 bytes (310 MiB)
Extracting archive: ComponenteFirma_3_0_18.img
—
Path = ComponenteFirma_3_0_18.img
Type = GPT
Physical Size = 324534272
ID = B313A395-AE10-4B43-9296-86CC205F7AFB
—-
Path = 0.disk image.hfsx
Size = 324493312
File System = HFS+
Offset = 20480
ID = B2DFF1CC-33D9-4D48-A053-024BAE3EDEC9
—
Path = 0.disk image.hfsx
Type = HFS
Physical Size = 324493312
Method = HFS+
Cluster Size = 4096
Free Space = 123305984
Created = 2025-02-05 15:53:41
Modified = 2025-02-05 15:53:42
ERROR: Dangerous link path was ignored : Componente Firma/Applications : /Applications
Sub items Errors: 1
Archives with Errors: 1
Sub items Errors: 1
Y ahora si no tengo idea el porque de esto
Corrijo porque pegue erroneamente…
~/Descargas/Componente Firma/Componente_Firma.app/Contents/Java$ java -jar MerlinkSignMV.jar
nov 23, 2025 10:09:13 PM main.MainProcess main
GRAVE: null
java.io.IOException: No existe el archivo o el directorio
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1023)
at e.d.a.a(Unknown Source)
at main.MainProcess.main(Unknown Source)
Hola Fernando, ese error aparece cuando la carpeta Documents (no confundir con Documentos) no existe. Es un error absurdo de la aplicación, que espera que exista y si no existe falla con ese error. Se soluciona fácilmente, está explicado en la guía mencionada:
mkdir $HOME/Documents
Saludos,
Hola Fran, correcto, ese era parte del problema, pero de nuevo me volvi a pegar en la parte cuando le das inicio de sesion, abre el cuadro de dialogo, pero da el mensaje de ¨no se han detectado tarjetas conectadas¨. Ahorita estoy con Mint, pero a ese punto llegue con Zorin OS y copn Ubuntu. No se que estare haciendo mal o si mas bien debo de hacer algo mas
Ya la firma en si si funciona para todo lo demas, es solo en SICOP donde esta la pega
Sí, el MerlinkSignMV.jar del SICOP tiene sus particularidades, la principal es que parece que todavía requiere Java 8, probablemente no sirve 17, 21 o 25. En Mint puede hacer:
sudo apt install openjdk-8-jre
Y seleccionar el comando java por defecto mediante:
sudo update-alternatives --config java
Y ahí elige la versión 8 (o versión 1.8.0, que es lo mismo).
Hola Fernando, ¿qué navegador está utilizando? Cuando escribe java -version en la consola, ¿aparece la versión 8? (o 1.8.0).
Si al tener iniciado el MerLinkSignMV.jar y limpia la pantalla de la consola y accede a https://www.sicop.go.cr/indexLogin.jsp?lang=es&logoDomain=S , ¿aparece algún mensaje de error?
En cuanto a la version si estoy corriendolo sobre Java 8
openjdk version “1.8.0_472”
OpenJDK Runtime Environment (build 1.8.0_472-8u472-ga-1~24.04-b08)
OpenJDK 64-Bit Server VM (build 25.472-b08, mixed mode)
Y en la consola no del navegador no aparece nada, estoy usando Chrome
En la terminal lo que me aparece es esto cada vez que le doy iniciar sesion:
java.io.IOException: /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.4.0′ not found (required by /usr/lib/SCMiddleware/libidop11.so)/usr/lib/SCMiddleware/libidop11.so
at sun.security.pkcs11.wrapper.PKCS11.connect(Native Method)
at sun.security.pkcs11.wrapper.PKCS11.(PKCS11.java:144)
at sun.security.pkcs11.wrapper.PKCS11$SynchronizedPKCS11.(PKCS11.java:1623)
at sun.security.pkcs11.wrapper.PKCS11.getInstance(PKCS11.java:159)
at services.core.device.model.b.b(Unknown Source)
at services.core.device.model.b.a(Unknown Source)
at controller.a.c(Unknown Source)
at controller.b.a(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source)
at org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source)
at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextMessage(Unknown Source)
at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(Unknown Source)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(Unknown Source)
at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(Unknown Source)
at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.Parser.parseSingleFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(Unknown Source)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(Unknown Source)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(Unknown Source)
at org.eclipse.jetty.io.FillInterest.fillable(Unknown Source)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(Unknown Source)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(Unknown Source)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(Unknown Source)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(Unknown Source)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(Unknown Source)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(Unknown Source)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source)
at java.lang.Thread.run(Thread.java:750)
Gracias, ese error está muy interesante, algo está sucediendo con la versión de la librería.
¿Podría mostrarme la salida de este par de comandos?
Es curioso porque la librería incluye su propio libssl.so.3 pero por alguna razón no la está agarrando aparentemente.
linux-vdso.so.1 (0x00007ffd78dc3000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x000076381ca13000)
libpcsclite.so.1 => /lib/x86_64-linux-gnu/libpcsclite.so.1 (0x000076381ca07000)
libcrypto.so.3 => /usr/lib/SCMiddleware/libcrypto.so.3 (0x000076381c400000)
libidolog.so => /usr/lib/SCMiddleware/libidolog.so (0x000076381c2b4000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x000076381ca02000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000076381c000000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000076381c9d2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000076381bc00000)
/lib64/ld-linux-x86-64.so.2 (0x000076381cc02000)
libssl.so.3 => /usr/lib/SCMiddleware/libssl.so.3 (0x000076381bef8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000076381bb17000)
fernando@fernando-ThinkCentre-M910t:~$ ls -l /usr/lib/SCMiddleware/
total 20296
-rwxr-xr-x 1 root root 1381904 sep 17 01:02 idocachesrv
-rw-r–r– 1 root root 175704 sep 17 01:02 legacy.so
-rw-r–r– 1 root root 6609760 sep 17 01:02 libcrypto.so.3
-rw-r–r– 1 root root 1352496 sep 17 01:02 libidolog.so
-rw-r–r– 1 root root 1914680 sep 17 01:02 libidop11.so
-rw-r–r– 1 root root 1254288 sep 17 01:02 libssl.so.3
-rw-r–r– 1 root root 4838072 sep 17 01:02 libt_ias.so
-rwxr-xr-x 1 root root 3238248 sep 17 01:02 SCManager
Gracias, sí está tomando la libssl.so.3 propia, por lo que está extraño.
Los tamaños de las librerías son diferentes a las mías, quizás porque yo uso la versión RPM, que viene compilada con otra versión de compilador y con otros parámetros seguramente. De todos modos revisemos otras posibilidades:
salida del comando:
openssl version
Por otra parte, sería bueno sasber si instaló el .deb de ubuntu 24.04 o si fue uno anterior. También si puede abrir la aplicación SCManager. Si la aplicación no se abriera, intente y aparecerá la ventana de notificación de tarjetas conectadas y vuelva a abrir SCManager. En la columna de iconos de la izquierda aparecerá un icono de interrogación, ahí indicará la versión. Por ejemplo la mía es la 6.23.44.0.
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
Idopte
Smart Card Middleware Desktop
Versión 6.23.44.0
Esta complicado esto Fran
Gracias, la versión de openssl es la típica de Ubuntu 24.04, que en la que se basa Mint. Curiosamente, es más antigua que la API que espera la librería cuando se invoca desde Java, que está buscando una versión superior a la 3.4.0 y no está utilizando la que está en la carpeta, como si la aplicación no estuviera tomando la ruta local para buscar la otra carpeta.
Sugiero desinstalar el paquete del smart card middleware (no sé cómo se llama) y descargar e instalar la versión para ubuntu 22.04 y ver si mejora la situación.
Estimado su ayuda , he instalado la firma digital en ubuntu y debian pero ahora mi esposa quiere usar fedora y al instalar me muestra este error que no logro resolver: sugey@fedora:~/Descargas/sfd_ClientesLinux_RPM64_Rev29/Firma Digital/Idopte$ sudo dnf install -y scmiddleware-costa-rica-user_idopte_6.23.44.0_rh9_amd64.rpm
Actualizando y cargando repositorios:
Repositorios cargados.
Error al resolver la transacción:
Problema: peticiones conflictivas
– nada proporciona libjavascriptcoregtk-4.0.so.18()(64bit) necesario por SmartCardMiddleware-6.23.44.0-0.x86_64 desde @commandline
– nada proporciona libwebkit2gtk-4.0.so.37()(64bit) necesario por SmartCardMiddleware-6.23.44.0-0.x86_64 desde @commandline
Puede intentar añadir a la línea de comandos:
–skip-broken para omitir paquetes no instalables
Quedo atento a sus comentarios estoy en fedora 43 con gnome
Hola Michael,
Para instalarlo en Fedora sugiero instalar de manera temporal una versión antigua webkit2gtk4.0 y javascriptcoregtk4.0:
Esta dependencia se eliminará luego porque no tiene actualizaciones de seguridad y al actualizar a la próxima Fedora al ser paquete sin soporte (“huérfanos”) los podría desinstalar el sistema, por lo que no es suficiente dejarlo así aunque solo con esto el paquete de idopte se pueda instalar.
Puede instalar el paquete de SCMiddleware incluso sin tenerlos instalados mediante el siguiente comando:
Para poder utilizar la aplicación SCManager hay que parchear la librería idopte para forzar que utilice webkit2gtk4.1 y javascriptcoregtk4.1 que sí tienen soporte. Tal vez deba instalarlos si no los tiene instalados para que patchelf funcione correctamente:
A nivel técnico, la única diferencia entre la versión 4.0 y la 4.1 es que la 4.0 enlaza con libsoup 2.x y la 4.1 enlaza con libsoup 3.x, pero esta librería no la utiliza directamente idopte (lo utiliza para la aplicación SCManager, que es una interfaz tipo web).
Tras esto ya puede eliminar los paquetes webkit2gtk4.0 y javascriptcoregtk4.0 y tal vez su dependencia libicu76 si se instaló con ellos.
Muchas Gracias Fran ya me funciono, saludos!!!
Hola!
Aún se necesita “sudo ln -s /usr/lib/p11-kit-proxy.so /usr/lib/firefox/libosclientcerts.so” o eso era para versiones muy viejas de Firefox?
Muchas Gracias !
hola Javier, lo de libosclientscerts en la guía anterior era una alternativa menos problemática que usar el driver antiguo con p11-kit-proxy directamente en varias distribuciones. En versiones posteriores de Firefox no me estaba funcionando libosclientcerts, por lo que podría ser una regresión, o que cambiaron su alcance. De todos modos el nuevo driver es bastante más estable y se puede utilizar p11-kit-proxy como sustituto de libnssckbi en Firefox/NSS sin que se pegue tanto, aparte de que hoy en día el mecanismo de autenticación cliente TLS apenas se utiliza por la variabilidad de la experiencia de usuario y manejo de la sesión, aparte de que en la mayoría de sitios se ha sustituido con Agente GAUDI y otras herramientas para realizar tanto autenticación como firma.
Muchas gracias, sí, miré que Librewof me reconoce bien la tarjeta, pero no me ofrece login o parecido para proveer el pin, voy a probar sin el enlace simbólico, talvez así… Pero tienes razón, ya ha venido a menos el uso sin el agente gaudi, para lo cual ya te formulo una pregunta aparte… Esta mejor darla por cerrada, muchas gracias !
Con gusto, por ahora la forma simple (y oficial) es la de configurarlo por cada cuenta de usuario. Esa guía que tenía era para configurarlo una vez para todos los usuarios, útil para despliegues corporativos, pero dado el escaso uso de hoy día lo mejor hacerlo por cada usuario, en Firefox y supongo que en Librewolf (152.0 o posterior, la configuración tiene cambios, los nombres pueden variar según la traducción) se puede configurar en Ajustes -> Privacidad y seguridad -> bajar hacia abajo hasta Seguridad de la conexión y del software -> Configuración avanzada -> bajar hacia abajo hasta Certificados -> Administrar dispositivos de seguridad -> Clic en botón Cargar y elige en nombre del módulo lo que quiera, “Firma Digital” por ejemplo, y en el archivo del módulo busque la ruta /usr/lib/SCMiddleware/libidop11.so pegando la ruta o examinando por carpetas. Si un sitio web solicitara certificado cliente le pedirá el PIN para iniciar sesión. El sitio web del bancobcr todavía lo tiene habilitado, quizás por error o experimento que quedó en nada, pero no es funcional y requiren GAUDI de todos modos. El firmador 2.0.0 se lanzará pronto e incluye un módulo equivalente al Agente GAUDI para poder entrar en sitios web pero con un cliente basado en software libre sin requerir instalar el Agente GAUDI oficial. Saludos.
Hola !
Uso artix, que es un derivado de arch pero sin systemd. Uso xlibre en vez de xorg (no wayland), uso dwm como WM, dunst para notificaciones (libnotify, dbus). Me mantengo al día con los repos de artix, que va algunos días quizás atrás de arch, pero no más que eso.
Dicho lo anterior parece que a pesar que obtengo reconocimiento de las tarjetas, los guis propietarios no me sirven. Se supone “/usr/lib/SCMiddleware/SCManager” levanta un gui pero a mí no, aunque no parece esencial, miro en las notificaciones de dunst que 2 tarjetas se reconocieron, supongo el lector más la tarjeta dle BCCR con los certificados / firma. Lo más malo es que “/opt/Agente-GAUDI/bin/Agente-GAUDI” levanta mostrandome una ventana completamente blanca, a los varios segundos aparece adentro de esa venta, como parte de la ventana, una notificación (no la del sistema o mejor dicho no la de dunst) que indica que ya estoy en estado conectado o algo así, pero se queda la venta blanca. Me di a la tarea de verificar en la página de verificación del BCCR, y a la 1ra supuse que de las opciones que ofrecía la de en medio era la que tendría que estar mostrando el agente gaudi, pero así al azar acerté ese 1ra prueba, y me llegó el correo diciendo que la prueba a había pasado satisfactoriamente. Entonces con eso supe que sí me está trabajando la tarjeta (la idea era seguir probando hasta acertar alguna, pero sin cambiar la ubicación de lo ofrecido, supuse que tarde o temprano el azar me llevaría a acertar, no creí que a la 1ra, pero qué dicha, no tuve que gastar mucho tiempo en eso).
Entonces sí me funciona el reconocimiento de la tarjeta del BCCR. y de alguna manera sí funciona el agente gaudi, pero no puedo trabajar con él porque en una autenticación real como para algún banco si acaso dan 3 opciones antes de boquear el acceso.
Alguien me comentó que hace un tiempo experimentó algo parecido pero con gnome, y que le instaló algún plugin de notificaciones y con eso se arregló el problema. Yo no uso gnome, y para notificaciones uso dunst. No hay plugin ni nada. No creo que lo de “/usr/lib/SCMiddleware/SCManager” sea eso tampoco, el agente es como una aplicación de java y el el manejador de la tarjeta es compilado. Revisé con ldd los ejecutables y no hace falta nada.
Pregunta extra, “/usr/lib/SCMiddleware/idocachesrv” no parece ser útil, cierto? De hecho para probar también lo levante antes que “/usr/lib/SCMiddleware/SCManager” y no noté diferencia alguna que cuando no lo levato…
Alguien sabe cómo se puede lidiar para que los guis de hecho me sirvan?
Muchas gracias !
Interesante dato, de hecho el SCManager no carga a veces, también me sucede en Fedora. Hay que tener la tarjeta conectada y tratar de abrirlo después de que ha aparecido la notificación de las tarjetas. Al principio pensaba que era por la versión de webkit2gtk4.1 que había que corregir el enlace dinámico roto en el ejecutable, pero seguía sucediendo aun con la dependencia corregida.
El idocachesrv se carga en initrc, este servicio es conveniente para acelerar el acceso a la tarjeta, ya que cachea consultas a la api pkcs11 comunes (obtener certificados, etc.) de hecho más bien va a dar problemas con systemd próximamente porque el instalador clásico utiliza un servicio initrc, pero en artix al no usar systemd no pasa nada, para quienes usamos systemd solo es cuestión de migrar ese servicio de initrc a un service unit, hay herramientas de systemd que lo generan automáticamente.
***
En cuanto a lo que le sucede con Agente GAUDI, puede ser algún problema entre el JavaFX que incorpora el paquete que sea incompatible con Xlibre o algo parecido. Puede intentar instalar java y openjfx y tratar de lanzarlo desde la carpeta /opt/Agente-GAUDI/lib/app/ donde lo que hace Agente-GAUDI es lanzarlo con su propio java, lanzando el siguiente jar:
Esto ejecuta el Java incorporado, utilizan la versión de JRE 17 de Bellsoft, que está en la carpeta runtime. Esto me está funcionando bien localmente.
He intentado ejecutarlo con esto usando java 25 y openjfx de mi distro, pero getskin devuelve null posiblemente porque el paquete que utilizo va a buscar a libjfxwebkit.so y el LoadLibrary falla, se puede ver en uno de los backtraces que no existe y con ello muestra un error, con esto no levanta la ventana para renderizar. La carpeta runtime que contiene el JRE de bellsoft sí la tiene. Otras ventanas como la de configuración, acerca de, etc. sí funcionan, pero esa es la que falla, por lo que asumo que el error se debe a eso. El error del icono que tenía se resuelve agregando los módulos y algunos warnings de native access con esto:
Debe ajustar el module path a la ruta donde tenga instalado openjfx en artix. Recuerde que ese openjfx puede ser específico de la versión de java que está ejecutando.
Estimado estoy en linuxmint 23.3 creo que es base ubuntuy 24.04 ya instale hasta gaudi y la tarjeta funciona para con el firmador libre (firmador.jar), que es el que usa mi esposa, cuando selecciono un archivo para firmarlo me de este mensaje de error, sabes que serà? recien instale esta distro y le instale openjdk pero veo que tiene la version 21 y 25 , agradezco su ayuda saludos
Error: java.lang.NullPointerException Detalle: Cannot invoke “java.awt.image.BufferedImage.getWidth()” because “bufferedImage” is null 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.
Buenas Michael, ese error es por una pequeña incompatibilidad con Java 25 pero tiene una solución efectiva provisional sin cambiar a Java 21, se documenta aquí:
https://codeberg.org/firmador/firmador/issues/427#issuecomment-12869601
Copio por aquí el texto traducido:
1. Ir a la pestaña configuración.
2. En el campo Imagen de firma, agregar dos dobles comillas ""
3. Clic en el botón Guardar.
La versión 2.0.0 del firmador no requerirá este pequeño ajuste, ya que vendrá corregido. Gracias y saludos.
Muchas gracias ya me funciono segun sus indicaciones, saludos