Páginas

viernes, 8 de mayo de 2026

Ubuntu 24. Lentitud para mostrar los certificados en la nssdb

 1. Introducción

Cuando referenciamos certificados de tarjeta en una nssdb (por ejemplo para chrome), dependiendo del driver utilizado por la tarjeta, se puede tardar mucho tiempo en leer la lista de certificados disponibles (y más cuando la tarjeta es de la ACCV-ISTEC).

La solución que plantea chatgpt es sincronizar la base de datos nssdb a otra (por ejemplo nssdb_limpia) pero solo los certificados no caducados y los que no sean de tarjeta.

El problema que suele pasar es que puede haber varios certificados que pueden estar caducados o no que compartan el mismo nick. Por tanto se tiene que buscar los certificados por otros campos que no sean el nick.


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.








domingo, 3 de mayo de 2026

Ubuntu 24.Ver información de los certificados nss, p12 y pkcs11

1. nss 

Ver los alias de los certificados p12 guardados en nss

certutil -L -d sql:$HOME/.pki/nssdb

Y muestra

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

EPN1                                                         u,u,u
ACCVCA-120 - ACCV                                            ,,   
Ximet Dante - YO MISMO                                       u,u,u
SocketAutoFirma                                              CT,C,C
FIRMA                                                        u,u,u
ACCV ROOT RSA EIDAS 2023 - ISTEC                             ,,   
ACCV RSA1 PROFESIONALES - ISTEC                              ,,   
ACCV RSA1 CLIENTE - ISTEC                                    ,,   

Ver los alias de los certificados pkcs11 guardados en nss

modutil -list -dbdir sql:$HOME/.pki/nssdb

Y muestra

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.22
	 slots: 1 slot attached
	status: loaded

	 slot: bit4id miniLector-EVO 00 00
	token: DNI electrónico (PIN1)
	  uri: pkcs11:token=DNI%20electr%C3%B3nico%20(PIN1);manufacturer=DGP-FNMT;serial=020338240b552f;model=PKCS%2315%20emulated
-----------------------------------------------------------

También se puede utilizar el comando p11tool (previa instacion con sudo apt install gnutls-bin

p11tool --list-tokens

Y muestra

Token 0:
	URL: pkcs11:model=p11-kit-trust;manufacturer=PKCS%2311%20Kit;serial=1;token=System%20Trust
	Label: System Trust
	Type: Trust module
	Flags: uPIN uninitialized
	Manufacturer: PKCS#11 Kit
	Model: p11-kit-trust
	Serial: 1
	Module: p11-kit-trust.so


Token 1:
	URL: pkcs11:model=PKCS%2315%20emulated;manufacturer=DGP-FNMT;serial=020338240b552f;token=DNI%20electr%C3%B3nico%20%28PIN1%29
	Label: DNI electrónico (PIN1)
	Type: Hardware token
	Flags: RNG, Requires login
	Manufacturer: DGP-FNMT
	Model: PKCS#15 emulated
	Serial: 020338240b552f
	Module: opensc-pkcs11.so

T


2. Firefox 

Firefox puede tener vaios perfiles, por tanto debemos averiguar primero el perfil antes de listar los certificados:

cat ~/.mozilla/firefox/profiles.ini

Y devuelve (el marcado en azul es el correcto)

[Install4F96D1932A9F858E]
Default=tiorqkz7.default-release-1695576053842
Locked=1

[Profile1]
Name=default
IsRelative=1
Path=iyig11y7.default
Default=1

[Profile0]
Name=default-release
IsRelative=1
Path=tiorqkz7.default-release-1695576053842

[General]
StartWithLastProfile=1
Version=2

Ver los alias de los certificados guardados en firefox en ese perfil (nss)

certutil -L -d sql:$HOME/.mozilla/firefox/tiorqkz7.default-release-1695576053842

Y muestra

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ACCVCA-120 - ACCV                                            ,,   
EPN1                                                         u,u,u
SocketAutoFirma                                              C,,


Y para ver los certificados pkcs11 que ve mozilla:

modutil -list -dbdir sql:$HOME/.mozilla/firefox/tiorqkz7.default-release-1695576053842

Y muestra

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. Nuevo módulo PKCS#11
	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.22
	 slots: 1 slot attached
	status: loaded

	 slot: bit4id miniLector-EVO 00 00
	token: DNI electrónico (PIN1)
	  uri: pkcs11:token=DNI%20electr%C3%B3nico%20(PIN1);manufacturer=DGP-FNMT;serial=020338240b552f;model=PKCS%2315%20emulated
-----------------------------------------------------------