1. Problemas surgidos
Para identificar la tarjeta se ejecuta pcsc_scan y nos dice que la tarjeta es del tipo G&D SmartCafe Expert 7 (JavaCard)
Y no había manera de poder configurar dicha tarjeta
- Ya había drivers anteriores libaetpkss.so pero eran de 32 bits y por tanto incompatibles. Cuando se ejecutaba: pkcs11-tool --module /usr/lib/libaetpkss.so --list-slots respondía:
sc_dlopen failed: /usr/lib/libaetpkss.so: wrong ELF class: ELFCLASS32 error: Failed to load pkcs11 module Aborting.
- La localizacion de dichos drivers anteriores era en /usr/lib
- Los drivers "bit4id" que aparecen el la ACCV parece ser que son para el lector y no para la tarjeta por tanto al ejecutar pkcs11-tool --module /usr/lib/bit4id/libbit4npki.so --list-slots respondía que podía reconocer al lector pero no la tarjeta:
Available slots: Slot 0 (0x0): Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536915 (token not recognized)
2. La posible solución
#Paso 1 — Descargar el .deb para Ubuntu 22.04 de KPN (distribuidor oficial de AET) cd /tmp wget "https://certificaat.kpn.com/files/drivers/SafeSign/SafeSign IC Standard Linux 4.0.0.0-AET.000 ub2204 x86_64.deb" -O safesign4_ub2204.deb #Paso 2 — Extraer solo la librería .deb sin instalar dpkg-deb -x safesign4_ub2204.deb /tmp/safesign_extracted # Ver dónde está la librería find /tmp/safesign_extracted -name "libaetpkss*" #Paso 3 — Copiar la librería al sistema sudo cp /tmp/safesign_extracted/usr/lib/libaetpkss.so* /usr/lib/ sudo ldconfig #Paso 4 — Verificar pkcs11-tool --module /usr/lib/libaetpkss.so --list-slots pkcs11-tool --module /usr/lib/libaetpkss.so --list-objects --type cert --login
pkcs11-tool --module /tmp/safesign_extracted/usr/lib/libaetpkss.so --list-objects --type cert --login Using slot 0 with a present token (0xcd01) Logging in to "ACCV". Please enter User PIN: Certificate Object; type = X.509 cert label: EPN1 subject: DN: CN=MI_NOMBRE MI_APELLIDO1 MI_APELLIDO2 - DNI 00000001X/serialNumber=00000001X, GN=MI_NOMBRE, SN=MI_APELLIDO1 MI_APELLIDO2, OU=CERTIFICADO ELECTRONICO DE EMPLEADO PUBLICO, O=AYUNTAMIENTO DEL BROSQUIL, C=ES ID: 112233abcd44efgji6asdfsa121sdfsdfsdf
3. Instalar en chrome
# Instalar nss-tools si no lo tienes sudo apt install libnss3-tools # Localizar el perfil de Chrome ls ~/.config/google-chrome/Default/ # o Chromium: ls ~/.config/chromium/Default/ # Registrar el módulo modutil -dbdir sql:$HOME/.config/google-chrome/Default \ -add "SafeSign ACCV" \ -libfile /usr/local/lib/libaetpkss.so -force # Verificar modutil -dbdir sql:$HOME/.config/google-chrome/Default -list
4. Instalar en Autofirma 1.9
Ahora falta probarlo a ver si funciona, pues de momento no he podido firmar con autofirma con el certificado de tarjeta de la ACCV
autofirma -Djava.security.debug=sunpkcs11 2>&1 | head -30
5. Instalar en Firefox
Firefox puede tener vaios perfiles, por tanto debemos averiguar primero el perfil antes de listar los certificados:
El perfil puede estar en :
- ~/.mozilla/firefox/profiles.ini o también en:
- ~/snap/firefox/common/.mozilla/firefox/profiles.ini
cat ~/.mozilla/firefox/profiles.ini (o a ~/snap/firefox/common/.mozilla/firefox/profiles.ini)
Y devuelve (el marcado en azul es el correcto)
Para registralo debemos apagar firefox, y si no estuvieramos en un snap haríamos
# Registrar (sustituye el nombre de tu perfil) modutil -dbdir sql:"$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \ -add "SafeSign ACCV" \ -libfile /usr/local/lib/libaetpkss.so -force
Y contesta
Module "SafeSign ACCV" added to database.
Pero como estamos en un snap debemos hacer:
pkill -f firefox # Verificar que la copia en snap existe ls -la $HOME/snap/firefox/common/lib/ # Si no está, copiarla cp /usr/local/lib/libaetpkss.so $HOME/snap/firefox/common/lib/ # Eliminar el módulo registrado con la ruta incorrecta modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \ -delete "SafeSign ACCV" -force # Añadirlo con la ruta dentro del snap modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \ -add "SafeSign ACCV" \ -libfile "$HOME/snap/firefox/common/lib/libaetpkss.so" -force # Verificar modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" -list
Probamos a ver si lo registrado
modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" -list
Y contesta:
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.98 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 2. DNIe library name: /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so uri: pkcs11:library-manufacturer=OpenSC%20Project;library-description=OpenSC%20smartcard%20framework;library-version=0.25 slots: 1 slot attached status: loaded slot: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536... token: uri: pkcs11: 3. SafeSign ACCV library name: /usr/local/lib/libaetpkss.so uri: pkcs11:library-manufacturer=A.E.T.%20Europe%20B.V.;library-description=Cryptographic%20Token%20Interface;library-version=3.0 slots: 5 slots attached status: loaded slot: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536915 token: ACCV uri: pkcs11:token=ACCV;manufacturer=A.E.T.%20Europe%20B.V.;serial=028D0037000D7613;model=19C41B06010D0000 slot: UNAVAILABLE 1 token: uri: pkcs11: slot: UNAVAILABLE 2 token: uri: pkcs11: slot: UNAVAILABLE 3 token: uri: pkcs11: slot: UNAVAILABLE 4 token: uri: pkcs11: -----------------------------------------------------------
Y parece que está bien y tenemos que parar y arrancar Firefox.
Si queremos comprobar más, podemos listar los "nick names" de los certificados de la tarjeta y nos pide la contraseña:
certutil -L \ -d "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \ -h "ACCV"
Y nos muestra: el nick ACCV:EPN1
Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Enter Password or Pin for "ACCV": ACCV:EPN1 u,u,u
Ahora debemos conectarnos a un web que pida autenticación por certificado a ver si puede ver el certificado.