Skip to content

Instantly share code, notes, and snippets.

@fbarbalho
Last active June 25, 2025 14:33
Show Gist options
  • Save fbarbalho/f909b1b042cdb41c5c365a9c4a119b0f to your computer and use it in GitHub Desktop.
Save fbarbalho/f909b1b042cdb41c5c365a9c4a119b0f to your computer and use it in GitHub Desktop.
Cómo usar el DNIe en macOS (y que funcione fuera de Firefox)

🪪 Cómo usar el DNIe en macOS (y que funcione fuera de Firefox)

✅ ¿Qué es el DNIe y por qué no funciona automáticamente en macOS?

El DNI electrónico español (DNIe) contiene dos certificados digitales:

  1. Certificado de autenticación (para identificarte en sitios web oficiales)
  2. Certificado de firma digital (para firmar documentos, por ejemplo en AutoFirma)

En macOS, aunque Firefox puede usar estos certificados directamente, otros navegadores (Chrome, Safari) y apps como AutoFirma no los ven por defecto porque dependen del sistema (Keychain / Llavero).


🎯 Objetivo

Hacer que los certificados del DNIe estén disponibles para todo el sistema macOS: navegadores, AutoFirma, Hacienda, etc.


🛠 Requisitos

  • macOS Ventura, Monterey, o superior

  • DNIe con chip activo

  • Lector compatible (funcionando)

  • Módulo instalado en: /Library/Libpkcs11-dnie/lib/libpkcs11-dnie.so

  • Tener instalado:


📦 Paso 1 – Instalar OpenSC (si no lo tienes)

brew install opensc

Esto instala herramientas como pkcs11-tool, que usaremos para extraer los certificados.


🔍 Paso 2 – Verificar qué certificados hay en el DNIe

Con el DNIe insertado:

pkcs11-tool --module /Library/Libpkcs11-dnie/lib/libpkcs11-dnie.so -O

Verás algo como:

Certificate Object; label: CertAutenticacion
ID: 4130...

Certificate Object; label: CertFirmaDigital
ID: 4630...

💾 Paso 3 – Exportar los certificados

Ejecuta estos comandos para guardarlos en el escritorio:

# Certificado de autenticación
pkcs11-tool --module /Library/Libpkcs11-dnie/lib/libpkcs11-dnie.so \
  -r -y cert \
  -d 413032... (completo del paso anterior) \
  -o ~/Desktop/dnie-auth.cer

# Certificado de firma
pkcs11-tool --module /Library/Libpkcs11-dnie/lib/libpkcs11-dnie.so \
  -r -y cert \
  -d 463032... \
  -o ~/Desktop/dnie-sign.cer

🔐 Paso 4 – Importar en el sistema (Llavero)

security import ~/Desktop/dnie-auth.cer -k ~/Library/Keychains/login.keychain-db
security import ~/Desktop/dnie-sign.cer -k ~/Library/Keychains/login.keychain-db

Ahora puedes abrir “Acceso a Llaveros (Keychain Access)” y verás los certificados dentro de la sección "login".


🌐 Paso 5 – Usar en Safari, Chrome, AutoFirma

Al acceder a sitios como:

… el navegador te pedirá seleccionar el certificado del DNIe.


❓ ¿Cuándo se pide la contraseña del certificado?

Cuando intentas autenticarte o firmar, macOS solicita tu PIN (contraseña) del DNIe.

  • El PIN es un número de 6 a 8 dígitos que te dieron al sacar tu DNIe.
  • Si no recuerdas el PIN, debes acudir a una comisaría con lector de DNIe para cambiarlo.
  • El sistema operativo pedirá el PIN automáticamente al usar el certificado (no antes).

Ejemplo:

  • Abrir AutoFirma y firmar → te pedirá PIN
  • Entrar a la Agencia Tributaria con DNIe → te pedirá PIN

🧪 ¿Cómo probar si todo funciona?

  1. Abre Safari o Chrome
  2. Ve a: https://www.dnielectronico.es
  3. Entra en "Prueba de DNIe"
  4. Selecciona el certificado cuando lo pida
  5. Introduce tu PIN
  6. Si ves tu nombre: ¡todo está funcionando!

🧰 Extras (opcional)

Configurar AutoFirma para que reconozca el DNIe

Crea un archivo en:

~/Library/Application Support/AutoFirma/autofirma.cfg

Con este contenido:

keystore.dnie.native.library=/Library/Libpkcs11-dnie/lib/libpkcs11-dnie.so

✅ Resultado final

  • Firefox: funciona automáticamente (si configuraste PKCS#11)
  • Safari / Chrome: funciona tras importar al Llavero
  • AutoFirma: funciona tras configurar .cfg
  • Todo el sistema reconoce el DNIe
  • Se pide el PIN solo cuando es necesario usar el certificado

@bomberstudios
Copy link

bomberstudios commented Jun 25, 2025

Ojo con el paso 1: al instalar opensc en Sequoia, Homebrew muestra un warning que dice:

The OpenSSH PKCS11 smartcard integration will not work from High Sierra
onwards. If you need this functionality, unlink this formula, then install
the OpenSC cask.

La opción correcta es instalar opensc-app con brew install opensc-app, que instala el Cask de OpenSC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment