Para quien utilice el sitio web del SICOP sabrá que se hace uso de un componente de firma. Este componente en la actualidad se ha publicado para Windows y macOS pero también funciona en GNU/Linux y no sería necesario usar Windows para estas tareas.
Para hacerlo funcionar, se pueden seguir los siguientes pasos:
- Para que el componente inicie, ha de existir una carpeta llamada Documents dentro de nuestra carpeta de usuario (algo así como /home/tunombredeusuario/Documents/). La forma universal para crearla es mediante el comando mkdir $HOME/Documents (ojo porque es Documents, no Documentos).
- Dirigirse al sitio web del Componente Firma, www.componentefirmacr.go.cr.
- Clic en Descargas, clic en el botón Seleccionar a la derecha del Instalador Mac OS X (no importa si es para Mac aunque tengamos GNU/Linux).
- Pedirá una dirección de correo electrónico por si se quieren recibir notificación de actualizaciones. Finalmente clic en Descargar.
- Una vez descargado, el fichero Componente_Firma.pkg se puede desempaquetar con doble clic en Nautilus del entorno de escritorio GNOME. Si se utiliza otro entorno y la herramienta de descompresión no reconoce archivos pkg (xar) se puede descomprimir con la herramienta xar mediante xar -xf Componente_Firma.pkg. Se creará una carpeta Componente_Firma.
- Doble clic en la carpeta y dentro habrá una carpeta llamada Main.pkg.
- Doble clic en la carpeta y dentro habrá un archivo comprimido llamado Payload.
- En Nautilus en algunos escritorios se puede desempaquetar con doble clic o se abrirá una herramienta de descompresión. Si no, se puede hacer clic secundario -> Extraer a… y elegir por ejemplo la carpeta actual, donde creará una carpeta Payload (1) o similar. También se puede descomprimir de la forma tradicional con cat Payload | gunzip -dc |cpio -i.
- Doble clic en la carpeta descomprimida de Payload y aparecerá otra carpeta dentro llamada Componente_Firma.app.
- Doble clic en la carpeta Componente_Firma.app y aparecerá otra carpeta dentro llamada Contents.
- Doble clic en la carpeta Contents y aparecerán varias carpetas, entre ellas una llamada Java.
- Doble clic en la carpeta Java. Aparecerá un archivo llamado MerlinkSignMV.jar.
- En algunos sistemas se puede lanzar el jar con doble clic (Ubuntu) y se quedará cargado en memoria (no se abre ninguna ventana), en otros se puede lanzar desde la terminal con java -jar MerlinkSignMV.jar. Hay que ha ejecutarlo con java 8, no es compatible con la versión 11.
Tras realizar estos pasos se debería poder cargar el sitio web de SICOP en el navegador Chromium. En Firefox también funciona si se agrega la siguiente línea en el fichero /etc/hosts del sistema, ya que a partir de la versión 66 no permite la conexión desde un sitio web seguro (HTTPS) a local inseguro por websockets:
127.0.0.1 service.componentefirmacr.go.cr
Seguidamente, el certificado que incluye el paquete puede haber vencido, aunque Chrome ignora los certificados con conexión websocket segura, por lo que en el caso de Firefox hay que visitar https://service.componentefirmacr.go.cr:4502/ desde el navegador y agregar una excepción haciendo clic en la ventana de aviso en el botón de “Avanzadas…” y haciendo clic en “Aceptar el riesgo y continuar”. Aparecerá un mensaje 404 y ya se puede cerrar la pestaña y quedará listo para iniciar sesión en SICOP.
Eso es todo. Ya se podrá iniciar sesión y hacer uso de Firma Digital para las operaciones habituales de la plataforma.
Hola sigo los pasos y me da este error:
Error: Unable to access jarfile MerlinkSignMV.jar
Hola Juan Carlos, si estás desde ubuntu, creo que los jar hay que marcarlos como ejecutables. Para ello, una vez el jar está fuera de la carpeta comprimida, hay que hacer clic secundario (clic derecho para diestros) y elegir Propiedades, allí en permisos hay que marcar la casilla de fichero ejecutable y aceptar. De esta forma debería poderse ejecutar con doble clic. También como requerimiento hay que tener instalado Java (sudo apt install default-jre).
Muchísimas gracias! Esta increíble tu blog, varios post me han ayudado y el firmador digital que hicistes me fue de mucha utilidad. El lunes pruebo lo que me indicas ya que fue la máquina del trabajo que formatee para meterme en el mundo de Linux
Gracias Juan Carlos, con mucho gusto. Si hay cualquier otro inconveniente me avisas. Quiero mejorar la documentación tanto para usuarios finales como también para desarrolladores para que las implementaciones que se usen en el país firmen o validen correctamente.
Hola, por acá dejo un script de bash para simi-automatizar el proceso.
No encontré una manera de descargar el pkg de Mac automáticamente, así que hay que pasarlo por parámetro.
https://gitlab.com/valarauco/firma-digital-cr/blob/master/sicop.sh
Genial, muchas gracias valarauco, por ahora la URL directa para la versión 3.0.7 parece que funciona por descarga directa sin necesidad de email mediante la URL http://www.componentefirmacr.go.cr/componenteFirmaCR/DownloadFile?hidden_seq=143 . También vi el script de instalación de Firma Digital para Debian que tiene en GitLab, está genial. Saludos.
Hola Valaruco, informo de que actualizaron silenciosamente el componente de firma. Sigue indicando versión 3.0.7 en el sitio web pero el id_seq cambió de 143 a 183:
http://www.componentefirmacr.go.cr/componenteFirmaCR/DownloadFile?hidden_seq=183
El hash del jar cambió, por lo que hubieron cambios. Saludos.
Hola de nuevo, publicaron nueva versión 3.0.9 del componente, el ID cambia a 261. El fichero pkg se identifica con el tipo mime text/html, pero no debería causar mayor molestia. Recomiendo descargarlo por HTTPS. componentefirmacr no tiene certificado pero el servidor es el que el del SICOP, el cual sí tiene certificado, así que está disponible mediante https://www.sicop.go.cr/componenteFirmaCR/DownloadFile?hidden_seq=261
Saludos.
Parece ser que le script https://gitlab.com/valarauco/firma-digital-cr/-/blob/master/sicop.sh aun logra detectar el número de secuencia correctamente. Ya va por 281.
http://www.componentefirmacr.go.cr/componenteFirmaCR/DownloadFile?hidden_seq=281
Genial, muchísimas gracias valarauco, efectivamente funciona. Para uso personal y pruebas he montado esta línea a partir de tu script para descargar el pkg:
curl https://www.sicop.go.cr/componenteFirmaCR/DownloadFile?hidden_seq=`curl --no-progress-meter https://www.sicop.go.cr/componenteFirmaCR/controladores.jsp | grep -E -m 1 -o "'([0-9]+)'" | tr -d "''"` -o Componente_Firma.pkg
El dominio lo he cambiado de componentefirma a sicop porque funciona con HTTPS, para mayor seguridad.
Saludos.
Agradecemos mucho la información brindada.
En Ubuntu 16 funciona pura vida, pero algo pasa en Ubuntu 18, en SICOP reconoce la tarjeta, el usuario, pide clave pero al validar se queda congelado y no hace nada.
Tienen idea qué puede ser?
Agradezco de antemano su ayuda.
Gracias Adriana, habría que verificar la versión de java que se está usando, con
java -version
, quizás dé problemas con Java 11 y funcione con Java 8, ya que hay un cambio en la forma de acceder a módulos PKCS#11.Hola de nuevo, quizás esto ayude en la comunicación:
Edite el fichero /etc/hosts y agregue la línea:
127.0.0.1 service.componentefirmacr.go.cr
Hola, muchos éxitos en este 2020!!! gracias por tus respuestas.
Probé lo del hosts y sigue igual, qué mal… gracias por tu ayuda… saludos
Hola Adriana, gracias, igualmente. He probado con Ubuntu 18.04 LTS y me he topado con que Firefox por alguna razón extraña me falla al reconocer el certificado de GoDaddy de sicop.go.cr y eso quizás esté bloqueando la comunicación con websocket de alguna forma (Firefox en Fedora 31 sí me funcoina bien), pero con Chromium (sudo apt install chromium-browser) sí me está funcionando en esa versión de Ubuntu sin problemas. Le he enviado un pantallazo por correo con la muestra. Saludos.
Otra posibilidad en que si se queda congelado con la versión vieja de libASEP11.so es porque hay que usar Java 8, para ello: instalar java 8 con “sudo apt install openjdk-8-jre” y luego si no se quiere eliminar Java 11, ejecutar: “sudo update-alternatives –config java” y elegir el número de opción correspondiente a la línea de Java 8. Entonces relanzar el comando “java -jar MerlinkSignMV.jar” y ya no fallará con excepción, ya que es incompatible con Java 11. Saludos.
Acabo de instalar e ingresar a Sicop por Ubunto 18.04 y funciona perfectamente. Muchas gracias
me funcionó mas o menos bien cuando la pagina lo reconoce y me pide un “certificado” ya sea tarjeta /o archivo luego un PIN, que debo hacer acá ?
Hola marcovx, en la actualidad creo que se inicia sesión con Firma Digital, por lo tanto se usa tarjeta y por tanto cuando solicita el PIN se ingresa la contraseña numérica de la tarjeta de Firma Digital, que deberá estar conectada al lector. Allí se podrá seleccionar el certificado de la tarjeta y el PIN es necesario para firmar el ingreso.
muy útil estimado!
Lo hice con ubuntu y me va resultando con chrome ,ingreso bien a sicop y llego a una parte donde me pide un archivo / una tarjeta / pin, donde obtengo eso ?
A mi me pasa igual. Aparece la ventana de “login” pero no reconoce el la tarjeta conectada. Sin embargo, al ejecutar el fimador_bccr si la reconoce, por ende no sería un problema de “reconocimiento del dispositivo y/o tarjeta”.
Buenas, he recibido reportes de que el firmador del BCCR bloquea el acceso a Firma Digital en otros programas y que desactivándolo temporalmente se resuelve este inconveniente. ¿Podrían confirmar si esto lo resuelve?
Hola buenos días traté de seguir sus recomendaciones pero no me reconoce la tarjeta, estoy usando Ubuntu 20.4 con chrome version 92.0.4515.131 y baje la el paquete 3.0.10 del componente de la firma electronica y cuanto ejecuto desde el terminal el archivo .jar genera lo siguiente:
java.io.IOException: /usr/lib/libASEP11.so: clase ELF errónea: ELFCLASS32/usr/lib/libASEP11.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.ExtensionStack.incomingFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Unknown Source)
at org.eclipse.jetty.websocket.common.Parser.parse(Unknown Source)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(Unknown Source)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(Unknown Source)
at org.eclipse.jetty.io.AbstractConnection$2.run(Unknown Source)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
java.lang.NullPointerException
agradezco la ayuda
Buenos días Marco, es posible que la arquitectura de procesador de la librería (libASEP11.so) no corresponda con la de Java. Si el sistema es de 64 bit y Java también, entonces hay que usar una versión de la librería de 64 bit.
Intente ejecutar el comando:
hostnamectl
Para saber qué arquitectura tiene su sistema Ubuntu. Gracias.
Muchas gracias Francisco, mi sistema es de bits, donde puedo conseguir la libreria faltante?
gracias por tu respuesta
perdon 64bits
Las últimas versiones del instalador de Soporte Firma Digital solo incluyen la librería de versión 64 bit. Una propuesta de instalación está en la siguiente guía: https://fran.cr/instalar-firma-digital-costa-rica-gnu-linux-ubuntu-debian/
gracias por la guía, pero sigue con el mismo error y lo curioso es que el IDProtect si reconoce la tarjeta… pero el chrome no…
¿Podría revisar si la librería en la ruta indicada por Chrome es de 64 bit? Con el siguiente comando en una terminal:
file /usr/lib/libASEP11.so
Si no se trata de un enlace simbólico debería indicar que es de 64 bit, de lo contrario habría que reemplazarla.
El IDProtect Pintool es posible que esté tomando la librería de la ruta /usr/lib/x64-athena/libASEP11.so que probablemente sí es de 64 bit.
La guía lo que indica es crear un enlace simbólico en /usr/lib desde la ubicación original de esa librería. Si ya existiera, es posible que haya que eliminar el fichero existente antes de crear el enlace simbólico con el comando ln -s
Saludos.
Excelente Francisco!!!!! ya funciona!!!! muchas gracias llevo desde las 9am pegado en esto 10.000.000.000 de gracias
Excelente, qué dicha que sirvió.
Con mucho gusto, un placer ayudar.
Instalador en MacOS Monterry
Un detalle a compartir: “El IDProtect Pintool es posible que esté tomando la librería de la ruta /usr/lib/x64-athena/libASEP11.so que probablemente sí es de 64 bit.”
Efectivamente, tengo configurado el Adode para firmar documentos, entonces para usar SICOP tuve que cerrar el Adobe. Me funciona sin problemas. Muchas gracias
Hola Francisco, desde ya muchas gracias por todo el apoyo que nos has brindado.
Estoy utilizando esta version de Mint
.15.0-121-generic #131-Ubuntu SMP Fri Aug 9 08:29:53 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Ya tengo instalado Gaudi y segui la guia paso a paso. Ya logro que a la hora iniciar sesion me abra el cuadro de dialogo.
Sin embargo una vez que llego aca reconoce el componente de firma, pero despúes de dar la clave, simplemente no avanza
De antemano agradezco tus comentarios tuyos y de la comunidad
Hola Luis Fernando, con mucho gusto. Si no aparece su nombre en la ventaba del SICOP, entonces está tomando una versión de java superior a la 8. En Mint basada en Ubuntu debe instalar openjdk-8-jre y luego ejecutar sudo update-alternatives --config java y seleccionar la versión 8 (o 1.8.0) para que funcione. Si tras esto no funcionara me avisa. Saludos,
Mil gracias, ya lo logre !!!!!