Dni electrónico en Debian, Ubuntu y Linux Mint (Actualizado 2017)

23:09:00 21 Comments


Introducción: 
Esta guia tiene como finalidad el uso del DNI electrónico en todas las versiones de Debian o Linux Mint que no tienen soporte oficial en la página oficial de la policía ,aunque este guía sea válida para cualquier versión. 
Ubuntu 16.04 LTS, Debian Jessie o anteriores está soportadas a fecha de Enero de 2017 de modo oficial en la web de Dnie, con lo cual no es necesario seguir este manual, basta con descargar el fichero correcto para nuestra distribución y ya está todo funcionando.

Pagina de descargas:

https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112

Las guías que he visto, no me acaban de convencer, ya que o bien están incompletas o bien no arrojan demasiada luz creando bastante confusión, lo cual nos lleva a "googlear" durante mucho tiempo ya que nuestra tarjeta sigue sin funcionar. 
Esta guía ha sido verificada con Debian Jessie (actual estable) y Stretch/Sid. 


Novedades:
La versión de OpenSC 0.14.0 que incorpora Jessie no funciona con Dnie, deberemos de descargar la versión 0.15.0 que incorpora el driver del DNIe español, con lo cual es proceso de instalación es mucho mas ágil y rápido. Antes teníamos que descargar las fuentes y compilar, ahora con instalar los binarios y unos pocos certificados ya lo tendremos funcionando.

Instalación de OpenSC:
Modificamos los repositorios de sofware para poder instalar paquetes de la versión testing, para ello debemos editar dos ficheros:
nano /etc/apt/sources.list
y añadimos las siguientes lineas:
deb http://ftp.ch.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.ch.debian.org/debian/ stretch main non-free contrib
después creamos el fichero apt.conf:
nano /etc/apt/apt.conf
Y añadimos lo siguiente:
APT::Default-Release "stable";
con esto nos aseguramos de que por defecto instale solo paquetes de la rama estable salvo que le especiquimos lo contrario sin necesidad de hacer apt-pinning. 

Instalamos Opensc en nuestro sistema
apt-get install -t testing opensc
Configuramos IceWeasel o Firefox para que pueda reconocer la tarjeta, seleccionamos: 
Preferencias/Avanzado/Cerificados/Dispositivos de Seguridad
Le damos a cargar y seleccionamos la librería de opensc-pkcs11.so como se muestra en la imagen inferior:



La ruta a cargar es:
/usr/lib/x86_64-linux-gnu/pkcs11/opensc-pkcs11.so
Si no estamos usando Debian, pero usamos otra distribución de linux, puede que la ruta donde se encuentran la librería no coincida, en ese caso primero realizamos una búsqueda en el sistema del fichero opensc-pkcs11.so y luego lo cargamos como se puede ver en la captura de arriba.

Instalación de los certificados:
Necesitamos los certificados oficiales de la Dirección general de la policía aquí.
Comentar que el enlace lo cambian constantemente, con lo cual si no funciona haced lo siguiente, id aquí , buscáis donde pone "Area de Descargas" y después pinchad en el enlace de "Autoridades de Certificación y Autoridades de Validación del DNIe". 
En total son 6 certificados 4 certificados que se instalan en Autoridades y otros dos que se instalan en Servidores dentro de Firefox. 
Una vez situados en la página, descargamos los primeros certificados (4 en total de autoridades) y los descomprimimos:


  • AC Raíz
Certificado pkcs1-sha256WithRSAEncryption
Número de serie: 00 c5 26 c9 6e 10 94 ed 43 4f f7 b5 fb 67 9f 94
Periodo de validez: Desde jueves, 16 de febrero de 2006 11:37:25 hasta viernes, 08 de febrero de 2036 23:59:59
Huella Digital (SHA-1): 22 29 f0 56 d3 4d 1c b6 3e 98 6f 26 b2 d0 8a b9 4f f0 8e 4d
Huella Digital (MD5): 0b 7d ca a8 ba c2 29 1d cf c7 11 36 38 c7 e7 ed

  • AC Subordinadas

Certificado pkcs1- sha256WithRSAEncryption
Número de serie: 4c 2e fa 0f 77 11 2c 07 44 02 da 18 af b9 fe 7e
Periodo de validez:
    Desde lunes, 27 de febrero de 2006 11:53:12
    Hasta viernes, 26 de febrero de 2021 23:59:59
Estado: Operativa
Huella Digital (SHA-1): 41 cf 9e c0 73 3d 58 e4 39 97 a6 c6 5d f7 97 c3 ee 99 40 7b
Huella Digital (MD5): 7f 7b 17 27 2d e9 04 f2 8c 90 ac c5 98 af e7 0b

Certificado pkcs1- sha256WithRSAEncryption
Número de serie: 3e 02 bf 5b de 8e 3d 16 44 05 7e fa 56 4c 42 75
Periodo de validez:
    Desde miércoles, 01 de marzo de 2006 12:01:14
    Hasta viernes, 26 de febrero de 2021 23:59:59
Estado: Operativa
Huella Digital (SHA-1): 50 2b d0 07 8e 6d a2 35 c4 5f 52 1c 63 ef 54 9d f0 19 8f dd
Huella Digital (MD5) :5b 6a a3 c5 7a 68 9a eb 7d 29 70 1e 91 9c 4f 96

Certificado pkcs1- sha256WithRSAEncryption
Número de serie: 08 f7 7b 06 6f b6 1b cd 44 05 7f 51 2e 0a db a8
Periodo de validez:
    Desde miércoles, 01 de marzo de 2006 12:02:41
    Hasta viernes, 26 de febrero de 2021 23:59:59
Estado: Operativa
Huella Digital (SHA-1): fb c0 71 d0 a4 81 11 bd df 77 76 d0 9e 42 bc 53 4e 24 48 70
Huella Digital (MD5): 67 a1 0e 56 91 c8 c5 8b e5 ba 91 8c ce 90 e8 7e

Ahora los vamos a instalar, para ello en Iceweasel o Firefox vamos a la siguiente ruta:

Preferencias/Avanzado/
Click en la pestaña de certificados


-Click en ver Certificados



Pulsamos en el botón importar, y seleccionamos de uno en uno todos los certificados que hemos descargado: 



Una vez terminamos de instalar todos los certificados, vamos a descargar los de Servidores (2 certificados en total) de la misma página donde descargamos los anteriores:


  • AV DNIE FNMT
Certificado pkcs1-sha256WithRSAEncryption
Número de serie: 2E570D1BD3CB47F655E6A2AC7EBAADD9
Periodo de validez: desde miércoles, 2 de septiembre de 2015 07:18:04 GMT hasta miércoles, 2 de marzo de 2016 08:18:04 GMT
Huella Digital (SHA-1): AE734A55B6731D324A38FA88FD73F2AF13A64E46
Huella Digital (MD5): 147D4B67660782A2E57B663EE41C599B

  • AV DNIE MINHAP
Certificado pkcs1-sha256WithRSAEncryption
Número de serie: 64ea71984b40b30455c998a89bacc435
Periodo de validez: desde martes, 11 de agosto de 2015 06:39:36 GMT hasta jueves 11 de febrero de 2016 07:39:36 GMT
Huella Digital (SHA-1): C313CF50A26E39E2DBCF607E8B0842F0CDB1AB59
Huella Digital (MD5): 131D8EEC6CDB3CEE117CF202C32C5344
Y los añadimos en la pestaña de "Servidores" con el botón de importar: 



Y con esto ya tendremos nuestro DNIe funcionando en linux, sólo nos falta probarlo en cualquier web donde este implantado. 

Resolución de problemas:
Tutorial resolución de problemas
O usar los comentarios para dejar vuestras dudas o problemas ;)

21 comentarios:

  1. Perfecto con FireFox, pero en Chrome no veo el cerificado.
    con modutil -list .. se ve perfectamente el reader i el DNI. Es decir la BD del chrome lo ve.

    ResponderEliminar
    Respuestas
    1. Hola, siento no haber respondido antes.
      Para usar DNIe con Chrome:

      http://www.sargo.es/2016/01/usando-dni-electronico-en-chrome-o.html

      Un saludo

      Eliminar
  2. un saludo, gracias por el tuto. Tengo un pequeño problema, tengo ubuntu 16.04 actualizado y en firefox dentro de la pestaña servidores, no me aparece el botón de importar, por tanto no he podido hacer ese paso. ¿alguna solución?

    ResponderEliminar
  3. Hola juanba, el problema es que en la última actualización de Firefox, han eliminado ese botón, en mi caso Debian Jessie sigue con la versión 46 que si lo mantiene, actualicé usando backports y así instalar la versión 48 para verificarlo.

    Soluciones:

    1)Ir a Preferencias
    2) Opciones > Avanzadas > Certificados > Servidores
    3)Hacer click en el botón de añadir una excepción
    4)Añadir la URL
    5)Hacer click es obtener certificado
    6)Click en confirmar excepción.
    7)Refrescar la página

    Logicamente esto lo añades cuando te vayas a autentificar y te aparezca la alerta, de este modo te añade el certificado, que a fin de cuentas es lo mismo.

    Otra solución es usar la versión 46 firefox-esr del respositorio estable (jessie) de Debian que si trae ese botón, aunque no veo motivo para ello.
    Si la página te aparece en un iframe, haces click en abrir como una nueva pestaña y no debería de dar problemas.

    Espero haberte ayudado. Un saludo

    ResponderEliminar
    Respuestas
    1. Perdón, es la versión 45.3.0 de firefox-esr no la 46.

      Un saludo

      Eliminar
  4. es curioso a mi lo que me ocurre es que no me pide el pin salta el cuadrito tipico de pin1 como cargandolo pero nunca me acaba pidiendo el pin

    ResponderEliminar
    Respuestas
    1. Comprueba que pinentry-gtk2 o pinentry-qt, estén instalados. Si usas Firefox lo mejor es usar la versión gtk. Es bueno poner que distribución usas y que escritorio (gnome, kde, xfce, fluxbox,etc...) Puede dar pistas de alguna dependencia incumplida. Además puedes lanzar tu navegador en modo verbose desde un terminal y ver que error muestra cuando te aparece el pin. Comprueba que no hay ninguna extensión del navegador que pueda bloquear ventanas emergentes para el dominio.

      Un saludo

      Eliminar
  5. En el paso:
    - Instalamos Opensc en nuestro sistema
    sudo apt-get install -t testing opensc
    Me da el error:
    E: El valor «testing» no es válido para APT::Default-Release ya que dicha distribución no está disponible en las fuentes

    ResponderEliminar
    Respuestas
    1. Prueba poniendo sudo apt-get install -t stretch opensc, si quieres que funcione poniendo testing, modifica el sources.list y donde pone stretch pon testing.

      Ten en cuenta que si usas Mint no respeta la ruta /etc/apt/sources.list, deberás editarlo con synaptic o la propias utilidades de Mint.

      Un saludo

      Eliminar
  6. No perdona, uso Linux Ubuntu 16.04 y firefox 50.1.0
    He probado las dos opciones que me has propuesto y me sigue dando el mismo error
    sudo apt-get install -t stretch opensc
    E: El valor «stretch» no es válido para APT::Default-Release ya que dicha distribución no está disponible en las fuentes

    ResponderEliminar
    Respuestas
    1. Vale, entonces es mucho más fácil, ya que opensc se encuentra en la rama oficial de Ubuntu 16.04, el manual está pensado para Debian, en ubuntu se usan los "apodos" de las versiones en tu caso Xenial. El paso de editar el apt.conf y el sources.list no es necesario ya que estás usando una versión moderna y por lo tanto ya lo incluye. Simplemente déjalo como venía por defecto, haz un apt-get update y después simplemente apt-get install opensc

      De cualquier modo, como menciona el artículo, esa versión de Ubuntu esta oficialmente soportada por la web oficial de DNIe, pinchas en el enlace del artículo y descargas .deb correcto para tu versión de Ubuntu, el solito te añade todo (driver y certificados), y ya tendrías todo funcionando.

      Un saludo

      Eliminar
  7. Si es cierto en la pagina oficial del DNIe en el area de descargas existe un enlace de descarga del
    PKCS#11 para Sistemas Linux – Unix. En concreto el fichero se llama:
    Ubuntu_(16.04_LTS_Xenial Xerus_15.10 Wily Werewolf)_libpkcs11-dnie_1.4.0_amd64.deb
    No se, si es esto, a lo que te refieres y no se si, instalando este programa ya me funcionaría el DNIe

    ResponderEliminar
    Respuestas
    1. Efectivamente, la guía estaba pensada antes de que publicasen esos paquetes deb optimizados para cada versión de Ubuntu. Pero si usas una versión muy nueva, tendrás que hacerlo manualmente ya que tardan en lanzarlo meses y aveces incluso más.

      Eliminar
  8. He instalado el PKCS#11.
    He configurado el dispositivo de seguridad en firefox
    He importado los certificados de la pagina dnielectronico.es
    y sigue sin funcionar. Cuando accedo a la pagina de verificacion del dnie de la FNMT

    https://www.sede.fnmt.gob.es/certificados/persona-fisica/verificar-estado/solicitar-verificacion
    Me aparece un recuadro con el mensaje
    Contraseña Requerida
    Please enter the master password for the DNI electrónico (PIN1).
    introducco contraseña. Acepto. Y me vuelve a aparecer el mismo recuadro solicitando otra vez la contraseña

    ResponderEliminar
    Respuestas
    1. Al pedirte la contraseña, quiere decir que el lector está funcionando correctamente, y si has revertido los cambios del manual antes de instalar el *.deb oficial, todo tiene que estar correcto ya que para eso se molestan en crearlo exclusivamente. EL problema debe de estar en que tu certificado está caducado (el propio del DNIe) o que está dañado internamente. Si tu DNI tiene ya un tiempo, debes saber que el certificado caduca a los 30 meses y debe de ser renovado en una comisaría de policía con máquina para tal efecto, ...... Otra posibilidad, si no quieres dar muchas vueltas, es pedir un certificado que te expide la FNMT, ya que no hace falta instalar nada ni tener lector, se solicitan en la seguridad social, o también se pueden obtener a través de internet con un DNIe funcionando correctamente.

      Un saludo

      Eliminar
  9. Hola Luis.
    Mi problema son los certificados.
    Primero probé con el paquete para Ubuntu. Como no funciona (no pasa de la instalación de los certificados) he tratado de seguir el manual pero al intentar instalar los certificados obtengo el mismo mensaje de error.

    "This personal certificate can’t be installed because you do not own the corresponding private key which was created when the certificate was requested."



    elementary OS 0.4 Loki (64-bit)
    Built on "Ubuntu 16.04.2 LTS"

    Firefox 51.0.1 (64-bit)
    Mozilla Firefox for Ubuntu
    canonical - 1.0

    ¿Alguna pista? Gracias

    ResponderEliminar
    Respuestas
    1. Esa distribución esta basada en Ubuntu, pero de modo parcial, y supongo que has descargado el paquete correcto a la versión de Ubuntu en la que está basada, pero pueden cambiar aspectos importantes.

      Descarga el CRT de la página de la policía, añádelo en la ruta /usr/local/share/ca-certificates o en el path correcto en el que se encuentre en tu sistema, después sudo update-ca-certificates

      Un saludo

      Eliminar
    2. Pepe: me he vuelto loco durante una hora con tu mismo problema y he encontrado la solución: como paso previo, hay que borrar *TODOS* los certificados relacionados con la FNMT que haya instalados en Firefox. Una vez limpio todo, ya he podido importar los otros certificados de este tutorial sin que me salga el dichoso mensajito.

      El problema creo que está relacionado con haber usado anteriormente el certificado personal de la FNMT.

      Aprovecho para agradecer al señor Armada la confección de esta guía. Compilar el kernel para que funcione en un reloj-calculadora Casio de los ochenta es varios órdenes de magnitud más sencillo que acudir a la kafkiana web oficial del "DNI-e" en busca de consejo y consuelo.

      Eliminar
  10. Ahora es mucho más fácil; y aunque a mí me reconoce el lector sin instalar nada, igualmente instalé:
    sudo apt-get install libccid pcscd pinentry-gtk2 pcsc-tools libpcsclite1 libpcsclite-dev libreadline6 libreadline-dev coolkey
    Si tu lector está basado en ACR38: sudo apt-get install libacr38u (juanetebitel).

    Ver si detecta el lector: lsusb
    Ver si lee el DNI-e con el comando: pcsc_scan
    Ctrl+Z ..cerramos la terminal y retiramos el DNI-e

    De la página "Versiones anteriores" descargar y ejecutar el deb actualizado "MD5: bba972e01924b2c290f10b7767dfe3d2 libpkcs11-dnie_1.3.1_Ubuntu-14.04_15.10-64bits.deb"
    https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_3000

    en "Dispositivos de seguridad", "Cargar" y como "Nombre del módulo" puse: DNI-e
    y en "Archivo del módulo": /usr/lib/libpkcs11-dnie.so

    Solicitar verificación: https://www.sede.fnmt.gob.es/certificados/persona-fisica/verificar-estado/solicitar-verificacion

    Y ya pude operar, por ejemplo: "Consulta de Puntos Con Certificado" aquí: https://sede.dgt.gob.es/es/tramites-y-multas/permiso-por-puntos/consulta-de-puntos/

    ResponderEliminar

  11. Thanks for sharing your thoughts on %meta_keyword%. Regards sign in to gmail

    ResponderEliminar
  12. Parece que es necesario ir actualizando las librerías. La 1.3.1 del comentario de Rafael Domínguez Losada, que me ha funcionado bien hasta hace relativamente poco --presenté la Renta 2017 con ella-- ya no va y hay que instalar la 1.4.0 disponible en el mismo enlace que él proporciona.

    ResponderEliminar