miércoles, 26 de agosto de 2026

Onshape (V): Definición de roscas

 1. Fer un dibuix 2 D per a definició de rosques

Anem a la part inferior esquerre i clickem sobre el signe "+" que és "insert new tab"



Ara selecciona Create Drawing (Crear dibujo).


Ara apareix esta pantalla i seleccionem "ANSI_A_MM.dwt"



Ara apareix esta pantalla



Seleccionem la peça en questió (Part 13- Final)

I selccionem la vista (en este cas Back, podría ser front) que millor representa i anar amb cura ja que no deixa desfer moviments


S'arrossega la peça quasi al centre del dibuix per a poder dibuixar les altres vistes de planta ,alçat etc i perspectives



Crida a la eina Callout (nota de forat) i fem click en el forat i apareix automaticament les característiques. En una mateixa cara fa una sola anotació de tots els forats roscats


Per exemple en esta vista, la fletxa roja indica el nombre de forats roscats. La nomenclatura es



Tot i això hi ha algunes que no van be o no es deixen pegar



Ara fem click sobre la pestamya baix a l'esquerra "Drawing 1" i seleccionem "export"


Ara exportem la peça també i cal fer un zip dels 2 fitxers i és ql que s'ha d'exportar a https://jlccnc.com/





martes, 14 de julio de 2026

WEBPROPv2 (XX). Crear entidad certificadora y certificados wildcard de servidor

 1. Crear la entidad certificadora.

sudo openssl genpkey \
  -algorithm RSA \
  -pkeyopt rsa_keygen_bits:4096 \
  -aes-256-cbc \
  -out ca_2026.key

Hay que indicar una contraseña


2. Crear certificado raiz de la CA

Creamos este fichero de propiedades ca_2026.cnf

[req]
prompt = no
distinguished_name = dn
x509_extensions = v3_ca

[dn]
C = ES
ST = Valencia
L = Poblacion
O = Edificio de Poblacion
OU = Informatica
CN = CA Edificio

[v3_ca]
basicConstraints = critical, CA:TRUE
keyUsage = critical, keyCertSign, cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer

Para ello, le damos 10 años de validez al certificado raiz

openssl req \
  -x509 \
  -new \
  -sha256 \
  -key ca_2026.key \
  -days 3650 \
  -config ca_2026.cnf \
  -out ca_2026.crt


3. Crear el fichero de configuración wildcard

creamos el fichero de la configuración del wildcard

sudo nano wildcard.cnf

con este contenido

[req]
prompt = no
distinguished_name = dn
req_extensions = req_ext

[dn]
C = ES
ST = Valencia
L = Poblacion
O = Edificio de Poblacion
OU = Informatica
CN = *.poblacion.es

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.poblacion.es
DNS.2 = poblacion.es

[server_ext]
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = @alt_names


4. Generar la clave privada del wildcard

sudo openssl genpkey \
  -algorithm RSA \
  -pkeyopt rsa_keygen_bits:2048 \
  -out wildcard_2026.poblacion.es.key


5. Crear la solicitud CSR

sudo openssl req \
  -new \
  -key wildcard_2026.poblacion.es.key \
  -out wildcard_2026.poblacion.es.csr \
  -config wildcard.cnf


6. Firmar el certificado con tu CA

sudo openssl x509 \
  -req \
  -in wildcard_2026.poblacion.es.csr \
  -CA ca_2026.crt \
  -CAkey ca_2026.key \
  -CAcreateserial \
  -out wildcard_2026.poblacion.es.crt \
  -days 3650 \
  -sha256 \
  -extfile wildcard.cnf \
  -extensions server_ext

Y piede la contraseña de la CA que hemos dado antes

Los archivos generados hasta ahora son:

ca_2026.crt                       Certificado público de tu CA
ca_2026.key                       Clave privada de la CA
wildcard_2026.poblacio.es.crt     Certificado wildcard
wildcard_2026.poblacion.es.key    Clave privada del wildcard


7. Comprobar el certificado

openssl x509 \
  -in wildcard_2026.poblacion.es.crt \
  -noout \
  -subject \
  -issuer \
  -dates \
  -ext subjectAltName

openssl verify \
  -CAfile ca_2026.crt \
  wildcard_2026.poblacion.es.crt


8. Instalar la CA como confiable en Ubuntu

Copia únicamente el certificado público de la CA:

sudo cp ca_2026.crt /usr/local/share/ca-certificates/ca_2026.crt
sudo update-ca-certificates

No copies nunca ca_2026.key fuera de su ubicación protegida.

En otros ordenadores, navegadores o móviles tendrás que instalar también ca_2026.crt como autoridad de confianza. De lo contrario, mostrarán un aviso de certificado no confiable.


9. Ejemplo para openresty(nginx) (/usr/local/openresty/nginx/conf)

server {
  listen 8449 ssl;
  server_name poblacion.es *.poblacion.es;

  ssl_certificate        /usr/local/openresty/nginx/certs/wildcard_2026.poblacion.es.crt;
  ssl_certificate_key    /usr/local/openresty/nginx/certs/wildcard_2026.poblacion.es.key;
ssl_client_certificate /usr/local/openresty/nginx/certs/ca_all_2026.cer;
}

Siendo ca_all_2026.cer una recopilacion de certificados raíz en los que se confía







martes, 23 de junio de 2026

Ubuntu. Ejecución de programas sin contraseña sudo (visudo, sudo, sudoers)

 1. Introducción

A veces en un entorno web puede ser necesario ejecurar comonados con permiso "sudo" y no tener que pasarle la contraseña. En mi caso quiero ejecutar un entorno virtual que tiene módulos de alta seguridad.


2. Ver que programas se pueden ejecutar sin pedir contraseña

Ejecutamos

sudo -l

y nos da

Entrades predeterminades concordants per a ximo a my-machine:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

Runas i valors predeterminats específics d'ordres per a ximo:
    Defaults!/usr/lib/*/libexec/kf5/kdesu_stub !use_pty

L'usuari ximo pot executar les ordres següents a my-machine:
    (ALL : ALL) ALL
    (root) NOPASSWD: /usr/bin/nmap
    (root) NOPASSWD: /home/ximo/my_venv/bin/python


Por lo que se ve, el usuario ximo en el ordenador my_machine puede ejecutar nmap y el python de un entorno virtual sin pedir contraseña de sudo

También se puede ver esta información con estos comandos

sudo cat /etc/sudoers
sudo ls -l /etc/sudoers.d/
sudo cat /etc/sudoers.d/*

3. Añadir programas para ejecutarse sin pedir contraseña sudo

Se ejecuta 

sudo visudo

y entramos en el editor y añadimos el programa que nos interese en este caso con el fondo amarillo metemos el nuevo entorno virtual

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# This fixes CVE-2005-4890 and possibly breaks some versions of kdesu
# (#1011624, https://bugs.kde.org/show_bug.cgi?id=452532)
Defaults        use_pty

# This preserves proxy settings from user environments of root
# equivalent users (group sudo)
#Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"

# This allows running arbitrary commands, but so does ALL, and it means
# different sudoers have their choice of editor respected.
#Defaults:%sudo env_keep += "EDITOR"

# Completely harmless preservation of a user preference.
#Defaults:%sudo env_keep += "GREP_COLOR"

# While you shouldn't normally run git as root, you need to with etckeeper
#Defaults:%sudo env_keep += "GIT_AUTHOR_* GIT_COMMITTER_*"

# Per-user preferences; root won't have sensible values for them.
#Defaults:%sudo env_keep += "EMAIL DEBEMAIL DEBFULLNAME"

# "sudo scp" or "sudo rsync" should be able to use your SSH agent.
#Defaults:%sudo env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"

# Ditto for GPG agent
#Defaults:%sudo env_keep += "GPG_AGENT_INFO"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d

ximo ALL=(root) NOPASSWD: /usr/bin/nmap
ximo ALL=(root) NOPASSWD: /home/ximo/my_venv/bin/python
ximo ALL=(root) NOPASSWD: /home/ximo/my_venv2/bin/python






viernes, 19 de junio de 2026

Visual Studio con pyhon. Consideraciones básicas (rutas, entorno virtual..)

1. Rutas a módulos


OJO SI ESTÁ INSTALADO ODOO HAY QUE DESINSTALARLO!!!

Supongamos que con VS creamos una carpeta llamada "softprop" que es la carpeta del proyecto. Y creamos 2 carpetas hijas "alan" y "bob" y dentro de cada una tenemos módulos.

Vamos a VS y elegimos la carpeta softprop.

Se nos queda pues esta estructura de ficheros de ejemplo:

softprop/
├─ __init__.py
├─ alan/
│  ├─ __init__.py
│  └─ alan1.py
├─ bob/
│  ├─ __init__.py
│  └─ bob1.py
└─ .vscode/
   ├─ settings.json
   └─ launch.json

Observar que:

  1. En cada carpeta hay un fichero vacío __init__.py sin este fichero va a haber problemas para referenciar módulos entre distintas carpetas
  2. Se ha creado la carpeta .vscode que tiene 2 ficheros importantes settings.json y launch.json
Por ejemplo dentro de bob1.py queremos referenciar al módulo alan1.py y queremos hacerlo así, de marenera que se vea la ruta desde la carpeta del proyecto inclusive:

from softprop.alan import alan1

Para ello , el contenido de los ficheros settings.json y launch.json debe ser:

// ------------  .vscode/launch.json  (carpeta softprop/.vscode)
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python Debugger: Current File", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal", //opcions noves "cwd": "${workspaceFolder}", "envFile": "${workspaceFolder}/.env" } //fi d'opcions noves } ] } //------------- .vscode/settings.json (carpeta softprop/.vscode)
{ "python.defaultInterpreterPath": "/home/eduard/MyPython/versio.03/venv_softprop/bin/python", "python.analysis.extraPaths": [ "/home/eduard/MyPython/versio.03" ] }

//-------------  .env (carpeta softprop)


PYTHONPATH = /home/eduard/MyPython/versio.03




Debemos destacar en launch.json:

  1. El "current working directory cwd" es ${workspaceFolder}
  2. La variable de entorno que apunta a la carpeta padre "PYTHONPATH": "${workspaceFolder}/.."
De settings.json aparecen las rutas al entorno virtual de python en la opciñon 1


2. Entorno virtual

Vamos a ver dos formas de manejar entornos virtuales, la cásica y con "uv".
Clásica Con "uv"
Creación  python -m venv .myvenv uv venv .venv_softprop
Activar powershell
cmd widows
bash linux
.myvenv\Scripts\Activate.ps1
.
myvenv\Scripts\activate.bat
source .
myvenv/bin/activate
Igual que el modo cĺasico
Abandonar  deactivate Igual que el modo cĺasico
Instalar paquetes pip install requests
python -m pip install requests
uv pip install requests
Ejeutar módulos
Para ejecutarlos desde la
carpeta softprop, hay que
darle el path de la carpeta
padre de softprop  en una 
variable de entorno
$env:PYTHONPATH=".."
python -m softprop.alan.alan1
PYTHONPATH=..
python -m softprop.alan.alan1  


o también

cd ..
python -m softprop.alan.alan1 






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
-----------------------------------------------------------