Esta guía documenta cómo instalar el controlador de la tarjeta de Firma Digital de Costa Rica y la jerarquía de certificados del Banco Central (SINPE) y del MICITT en el sistema operativo Ubuntu 18.04 LTS.

Esta guía de instalación tiene los siguientes propósitos:

Instalación de las dependencias

sudo apt -y install pcscd icedtea-netx openjfx

Descarga del “instalador”

cd ~/Descargas/

unzip sfd_ClientesLinux_Rev09.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:

sudo cp ~/Descargas/Firma\ Digital/Certificados/* /usr/local/share/ca-certificates/

sudo rename.ul -- .cer .crt /usr/local/share/ca-certificates/*.cer

for file in /usr/local/share/ca-certificates/*.crt; do sudo openssl x509 -inform DER -in "$file" -out "$file.tmp"; done 2>/dev/null

sudo find /usr/local/share/ca-certificates/ -type f -empty -delete

sudo rename.ul -- .tmp '' /usr/local/share/ca-certificates/*.tmp
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 y con los permisos correctos de usuario.

cd ~/Descargas/Firma\ Digital/PinTool/IDProtect\ PINTool\ 6.41.01/DEB/

ar p idprotectclient_641.01-0_amd64.deb data.tar.gz | tar zx ./usr/lib/x64-athena/libASEP11.so

sudo mv usr/lib/x64-athena/libASEP11.so /usr/lib/x86_64-linux-gnu/pkcs11/

sudo chown root:root /usr/lib/x86_64-linux-gnu/pkcs11/libASEP11.so
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/libASEP11.so /usr/lib/x86_64-linux-gnu/

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/libASEP11.so /usr/lib/

sudo mkdir -p /usr/lib/x64-athena/

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/libASEP11.so /usr/lib/x64-athena/
sudo mkdir /etc/Athena/

sudo gedit /etc/Athena/IDPClientDB.xml
<?xml version="1.0" encoding="utf-8" ?>
<IDProtect>
 <TokenLibs>
  <IDProtect>
   <Cards>
    <IDProtectXF>
     <ATR type='hexBinary'>3BDC00FF8091FE1FC38073C821106600000000000000</ATR>
     <ATRMask type='hexBinary'>FFFF00FFF0FFFFFFFFFFFFFFFFF0FF00000000000000</ATRMask>
    </IDProtectXF>
   </Cards>
  </IDProtect>
 </TokenLibs>
</IDProtect>
sudo mkdir -p /etc/pkcs11/modules/

sudo gedit /etc/pkcs11/modules/firmadigital.module
module: libASEP11.so
sudo gedit /usr/local/sbin/update-p11-kit-symlinks
#!/bin/sh

FIREFOX_LIB=/usr/lib/firefox/libnssckbi.so
THUNDERBIRD_LIB=/usr/lib/thunderbird/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 "$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
sudo chmod +x /usr/local/sbin/update-p11-kit-symlinks
sudo gedit /etc/systemd/system/p11-kit-proxy-updater.service 
[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
sudo systemctl enable p11-kit-proxy-updater.service

sudo systemctl start p11-kit-proxy-updater.service

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

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