miércoles, 6 de mayo de 2026

Ubuntu 24. Problemas con la tarjeta nueva de la ACCV G&D SmartCafe Expert 7 (JavaCard)

 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

  1. 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.
  2. La localizacion de dichos drivers anteriores era en /usr/lib
  3. 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


Le indiqué a Claude AI  que el tipo de tarjeta era G&D SmartCafe Expert 7 (JavaCard) según pscs_scan y me indicó que descargara los drivers de 64 bits de KPN (que es el distribuidor oficial de AET), los descomprimiera y los copiara a /usr/lib machacando los drivers antiguos de 32 bits.

#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

Y si que funcinó ahora, me muestra correctamente

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

Hay que tener en cuenta que al instalr libnss3-tools puede haber problema con cruce de depebndencias de 32 y 64 bits y si falla hay que preguntar a una IA como solucionarlo. Los paso que me indica Claude son:

# 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

Después hay que reiniciar Chrome (y Brave si es el caso)

4. Instalar en Autofirma 1.9

Hay que entrar en Herramientas -> Preferencias -> (Tab) Almacenes de Claves -> Combo de Selección de tarjeta -> Agregar tarjeta
Y darle estos parametros:

Ahora se le da al botón conectar 


Y nos pide el pin





Análogamente se haría para el DNIe donde se tendría que indicar la librería correcta


Ahora falta probarlo a ver si funciona, pues de momento no he podido firmar con autofirma con el certificado de tarjeta de la ACCV

Claude indica que con esta órden no debería dar problemas:

autofirma -Djava.security.debug=sunpkcs11 2>&1 | head -30





5. Instalar en Firefox


Hay que localizar el perfil en Firefox y registrar la libreria en él.Tal como vimos en el post anterior 

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
Hacemos el cat al fichero correspondiente 

cat ~/.mozilla/firefox/profiles.ini (o a ~/snap/firefox/common/.mozilla/firefox/profiles.ini)

Y devuelve (el marcado en azul es el correcto)

[Profile2] Name=Default User IsRelative=1 Path=e1p51k0o.Default User Default=1 [Profile1] Name=default IsRelative=1 Path=35j7fxvk.default [Profile0] Name=default-release IsRelative=1 Path=72s3mnjv.default-release-1588245081987 [General] StartWithLastProfile=1 Version=2 

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.








No hay comentarios :

Publicar un comentario