Actualizado el 30 de junio de 2026

El error NSS: client certificate not found (nickname not specified) aparece con frecuencia al trabajar con curl, wget, certbot u otras herramientas de Linux que usan la librería NSS (Network Security Services) de Mozilla. En esta guía actualizada a 2026 te explicamos qué significa exactamente el error, por qué ocurre y cómo resolverlo paso a paso según el escenario.

solucion error curl nss not found nickname

Qué es NSS y por qué genera este error

NSS es la librería criptográfica que Mozilla desarrolló originalmente para Firefox y que en muchas distribuciones Linux (sobre todo Red Hat, CentOS, Fedora y derivados) se usa también a nivel de sistema. Cuando una herramienta invoca NSS para iniciar una conexión TLS y necesita un certificado de cliente, tiene que indicarle cuál usar referenciándolo por un «nickname» (nombre identificador).

Si el proceso no especifica el nickname, o si NSS no encuentra el certificado en su base de datos, aparece el mensaje:

NSS: client certificate not found (nickname not specified)

En entornos modernos, la mayoría de distros han migrado a OpenSSL, pero NSS sigue presente en herramientas heredadas o configuraciones específicas (servidores Apache con mod_nss, pakete Red Hat Directory Server, clientes LDAP antiguos).

Causas habituales del error

  • Certificado no importado en la base NSS: el certificado existe como archivo pero no está cargado en la NSSDB del sistema o del usuario.
  • Nickname vacío o mal escrito: la línea de comandos no pasa el parámetro --cert con el nickname correcto.
  • NSSDB corrupta: los archivos cert9.db, key4.db o pkcs11.txt están dañados.
  • Permisos insuficientes: el usuario que ejecuta el comando no tiene lectura sobre la NSSDB.
  • Versión obsoleta de curl compilada contra NSS: curl con NSS está deprecado desde 2022; muchos sistemas modernos ya lo enlazan a OpenSSL.

Diagnóstico: comprobar qué librería usa curl

El primer paso es saber si tu binario de curl realmente está usando NSS:

curl --version

Busca en la salida la línea SSL:. Verás algo así:

curl 7.61.1 (x86_64-redhat-linux-gnu) libcurl/7.61.1 NSS/3.90
Protocolos: dict file ftp ftps gopher http https...

Si pone NSS, tu curl usa esta librería y el error tiene sentido. Si pone OpenSSL u otra, el error viene de otro proceso del sistema.

Solución 1: listar y elegir el certificado correcto

Para ver qué certificados tiene NSS cargados:

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

O si quieres consultar la base del sistema:

certutil -L -d sql:/etc/pki/nssdb

Identifica el nickname del certificado que quieres usar. Luego pásalo explícitamente a curl:

curl --cert "MiCertificado" https://servidor.ejemplo.com

Solución 2: importar un certificado nuevo a la NSSDB

Si el certificado existe como archivo pero no está en la base NSS, impórtalo:

certutil -A -n "MiNuevoCert" -t "u,u,u" -i /ruta/al/certificado.pem -d sql:$HOME/.pki/nssdb

Parámetros:

  • -n: el nickname que quieres asignar.
  • -t: los trust attributes (u,u,u = certificado de usuario).
  • -i: archivo de entrada.
  • -d: ruta de la NSSDB.

Para importar también la clave privada (requiere formato PKCS#12):

pk12util -i certificado.p12 -d sql:$HOME/.pki/nssdb

Solución 3: regenerar la NSSDB si está corrupta

Si sospechas corrupción, respalda y regenera:

cp -r $HOME/.pki/nssdb $HOME/.pki/nssdb.bak
rm -rf $HOME/.pki/nssdb
mkdir -p $HOME/.pki/nssdb
certutil -N -d sql:$HOME/.pki/nssdb --empty-password

Luego vuelve a importar tus certificados.

Solución 4: usar curl contra OpenSSL

En RHEL 8+, CentOS Stream y Fedora 30+, curl ya viene enlazado con OpenSSL por defecto. Si necesitas evitar NSS por completo:

sudo dnf install libcurl-minimal curl-minimal

Y usa los parámetros OpenSSL estándar:

curl --cert /ruta/cert.pem --key /ruta/clave.pem https://servidor

Solución 5: variables de entorno

A veces el error se soluciona apuntando explícitamente a la base de certificados con variables de entorno:

export SSL_DIR=$HOME/.pki/nssdb
export NSS_DEFAULT_DB_TYPE=sql

Depuración avanzada con strace

Si ninguna solución anterior funciona, rastrea qué archivos abre curl y dónde falla:

strace -e openat,stat -f curl https://servidor 2>&1 | grep -i "pki\|nss"

Verás qué bases de datos intenta abrir curl y cuáles devuelven ENOENT (no encontrado).

Alternativa: migrar a un servidor web moderno

Si el error aparece en un servidor Apache con mod_nss, lo recomendable es migrar a mod_ssl (OpenSSL). El proceso:

  1. sudo dnf install mod_ssl
  2. Convertir certificados NSS a PEM con pk12util + openssl pkcs12.
  3. Configurar ssl.conf con SSLCertificateFile y SSLCertificateKeyFile.
  4. Deshabilitar mod_nss y reiniciar Apache.

Cuándo este error es normal y cuándo es grave

Si aparece en un script puntual que no usa autenticación mutua TLS, es inofensivo: indica que curl intentó enviar un certificado cliente pero el servidor no lo requería. Si aparece en un servicio en producción que sí necesita mTLS (APIs bancarias, integraciones B2B, infraestructuras críticas), es un bloqueo total de la comunicación y hay que resolverlo de inmediato.

Prevención: buenas prácticas con NSS

  • Mantén tu distribución actualizada; NSS recibe parches de seguridad con frecuencia.
  • Documenta los nicknames de tus certificados internos.
  • Realiza backups periódicos de /etc/pki/nssdb antes de cada rotación.
  • En equipos nuevos, valora migrar todo a OpenSSL; es el estándar de facto actual.

Conclusión

El error «NSS: client certificate not found» casi siempre se resuelve identificando el nickname correcto o importando el certificado a la base NSS. Si vives en un entorno donde NSS sigue siendo obligatorio (RHEL legacy, OpenLDAP con conexiones TLS antiguas), dominar certutil y pk12util es esencial. Si puedes migrar a OpenSSL, hazlo; simplifica la operativa y reduce la superficie de fallos.

En LaudeMMedia administramos infraestructura Linux y migraciones TLS para empresas desde 2008. Si estás modernizando un stack legacy o te bloquea un problema de certificados, cuéntanos tu caso.

Sigue aprendiendo

Si te ha resultado útil este artículo, quizá te interesen también:

Preguntas frecuentes

¿Puedo usar curl con NSS y OpenSSL en la misma máquina?

Sí, pero solo uno estará activo a la vez según cómo compiles o instales curl. En la mayoría de distros actuales, tendrás la versión con OpenSSL por defecto y podrás instalar libcurl-nss como paquete alternativo si lo necesitas.

¿Puedo usar Let’s Encrypt con NSS?

Certbot puede generar certificados válidos para cualquier servicio, pero la importación en NSSDB es manual. Genera el .pem estándar y luego usa certutil -A para cargarlo.

¿El error aparece también en Windows?

En Windows NSS se usa principalmente dentro de Firefox o Thunderbird. El equivalente en el sistema operativo sería la tienda de certificados de Windows (certmgr.msc). Los errores son distintos aunque la lógica es similar.

¿Cómo migro una NSSDB a OpenSSL?

Exporta cada certificado con pk12util -o cert.p12 -n "Nickname" -d sql:$HOME/.pki/nssdb y luego convierte a PEM con openssl pkcs12 -in cert.p12 -out cert.pem -nodes.


Últimos artículos

Subscríbete a nuestra newsletter

No Spam! Solo contenido de valor directamente a tu inbox

LaudeMMedia
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.