Existe diverso software para utilizar máquinas virtuales desde una máquina anfitrión con sistema operativo GNU/Linux. KVM y QEMU es una de las formas más eficientes para virtualizar sistemas operativos como GNU/Linux, Windows y macOS dentro de GNU/Linux.
Los tres sistemas operativos mencionados tienen soporte para Firma Digital, sin embargo hay que realizar algunos pasos para poder utilizar el dispositivo físico en el huésped. La razón para escribir este artículo tiene dos motivos, el primero es que el sitio web de Soporte Firma Digital no ofrece soporte de instalación en máquinas virtuales y el segundo por la existencia de un par de problemas que impiden utilizar correctamente los dispositivos USB en estas máquinas virtuales cuando se utilizan herramientas basadas en libvirt (Cajas, virt-manager, virt-viewer, etc.).
Desactivar temporalmente pcscd en la máquina anfitrión
En la herramienta Cajas de GNOME (gnome-boxes) y otras formas de interfaz gráfica de libvirt, se puede seleccionar un dispositivo USB para compartirlo con la máquina huésped. Sin embargo, si en la máquina anfitrión está habilitado pcscd.socket, al tratar de redirigir el USB fallará porque está en uso. Para prevenirlo, hay que ejecutar desde una terminal:
sudo systemctl stop pcscd.socket
De esta forma ya no dará error al intentar redirigir el dispositivo USB hacia las máquinas virtuales desde Cajas.
Eliminar el dispositivo smartcard emulado de las máquinas virtuales GNU/Linux
Cuando se virtualiza GNU/Linux dentro de GNU/Linux y si las máquinas se han creado desde una aplicación basada en libvirt como Cajas o virt-manager que hacen uso de libosguest, agregan un dispositivo smartcard por defecto en la configuración de la máquina virtual. Este dispositivo aparecerá al hacer lspci y aparecerá como de marca Gemalto. Este dispositivo está diseñado para utilizarse en modo pasarela (predeterminado) o como anfitrión. Requiere una configuración avanzada y es más conveniente no utilizarlo, no solo por complejidad o para una simulación más realista, sino porque entra en conflicto con la librería libASEP11.so utilizada en las tarjetas de Firma Digital de persona física. De tres versiones de la librería probadas, la más antigua muestra un error general y cierra la aplicación que la usa; la distribuida con PinTool versión 6.xx funciona parcialmente, fallando en aplicaciones Java y en Firefox; y la versión 7.xx bloquea la aplicación que trate de usarla, y ello aun sin tener ningún lector conectado.
Para verificar si está incluido y eliminar el dispositivo, una de las opciones más sencillas es mediante la herramienta “Gestor de máquinas virtuales”, también conocida con el nombre de su ejecutable, virt-manager. Desde esta aplicación hay que tener conexión la sesión de usuario en caso de que la máquina virtual se haya creado con Cajas y abrir la máquina virtual y en la vista de detalles eliminar el dispositivo smartcard si apareciera en la lista.
Instalación del dispositivo
Finalmente quedaría instalar los componentes de Firma Digital en la máquina virtual de forma habitual, si no se había realizado antes. Cuando se redirige un dispositivo USB a la máquina virtual funcionará como si estuviera en una máquina física, por lo que deberá instalarse de la misma manera. Las guías de este sitio web explican cómo realizarlo en el caso de GNU/Linux.