Utilizar DNI electrónico con Ubuntu 12.04

Nuestro gobierno ofrece un asistente para la instalación de nuestro dni electrónico en Ubuntu, desde la web https://zonatic.usatudni.es/aplicaciones/asistente-dnie/descarga
Que no funciona con las versiones nuevas de Ubuntu entre ellas la Ubuntu 12.04.
Por este motivo es necesario realizar este manual para que aquellos que lo deseen puedan seguir la instalación paso a paso tal como yo la hice para hacerlo y comprobando hasta el final su funcionamiento.
Estos pasos están basados en el manual realizado por Bit planet.

Bueno, empecemos, lo primero es comprobar que no hay una instalación previa de opensc.
Lo podemos comprobar con Synaptic, haciendo una búsqueda. Si hubiese alguna podemos desinstalarla.

Ahora conectamos el lector en un puerto usb y comprobamos si nuestro sistema lo reconoce
ejecutamos en un terminal el comando:
$lsusb
Con este comando se listarán los dispositivos conectados a los puertos usb y debe estar vuestro dispositivo.

Si no consigues ver el lector en la lista de dispositivos deberías conectar el lector en otro puerto usb.
Si tu lector no es compatible con Ubuntu 12.04 y quizás necesites buscar por internet y encontrar el driver para que Linux lo identifique.
Ahora hay que instalar los siguientes paquetes: pcscd, y pcsc-tools
Puedes hacerlo desde el terminal o desde Synaptic

Ahora probamos el lector, sin tener el DNI insertado, con el comando:
$pcsc_scan
Y si sale una pantalla parecida a esta es que funciona.
Pero también puede ocurrir que la pantalla que salga sea como esta:

Entonces lo primero que hay que hacer es reiniciar el equipo y volver a intentarlo.
Si el mensaje sigue siendo el mismo hay que buscar el driver apropiado. En mi caso el lector que tengo es un Mini lector de Bit4id. he visto que existe un driver empaquetado en un paquete deb, y lo he instalado.
De nuevo he reiniciado el equipo y me lo ha reconocido perfectamente.
Bien pues ahora llega la segunda parte, instalar los certificados necesarios.
- Autoridad de certificación “AC Raíz"
- Autoridad de validación del DNIe AV DNIE FNMT"

En primer lugar, desde “AC Raíz" descargamos el archivo:
Y desde AV DNIE FNMT" descargamos el archivo:

Una vez descargados los archivos comprimidos, los extraemos en la misma carpeta


Ahora hay que abrir Firefox y vamos a menú Editar - Preferencias - Avanzado - Cifrado- Ver certificados y en la siguiente pantalla en Autoridades pulsamos importar y elegimos en la carpeta descargas ACRAIZ-SHA2.crt.

En la siguiente pantalla marcamos confianza en las tres casillas y le damos aceptar.
Después de esto vemos nuestro certificado en la lista:

Ahora en la pestaña servidores también le damos a importar, y elegimos el fichero que tenemos en nuestra carpeta de descargas: AVDNIEFNMTSHA2

Pasamos a instalar el opensc modificado para que funcione con el DNIe.
Como es una versión modificada tendremos que compilarlo para lo cual necesitamos descargar unos cuantos paquetes para realizar la tarea.
En un terminal escribimos:
sudo apt-get install autoconf subversion libpcsclite-dev libreadline6 libreadline-dev openssl libssl-dev libtool libltdl-dev libccid pinentry-gtk2


Una vez instalados, creamos una carpeta con el nombre: opendnie:
desde consola: $mkdir opendnie.
O en modo gráfico con botón derecho crear carpeta

Ahora descargamos los archivos del código fuente necesarios desde el servidor de Cenatic.
En primer lugar cambiamos a la nueva carpeta y descargamos con el siguiente comando que nos descargará la última versión disponible


cd opendni
svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk

Al introducir el comando, se te pregunta que aceptes un certificado para la descarga, ya que se usa una conexión segura. Basta con elegir t (tempora) y se efectuará la descarga, creandose una nueva carpeta, llamada trunk, en la que hemos creado con el nombre opendni.
Actualización
Como no es posible la descarga desde Morfeo-project, os pongo este enlace para descargar la versión que yo me instalé para ver si os sirve para la instalación.
El enlace es a través de Mega y la contraseña para descomprimir la carpeta es: esbuntu
https://mega.co.nz/#!F9AgWIJI!Jb6W1CnKMfWYM31FFlGKw06ac1hGNrqM36sH30RfHKA

Los usuarios de Ubuntu debemos realizar una modificación en un archivo para que la compilación funcione, porque una de las librerías que va a buscar necesita que le indiquemos donde está.
Para ello debemos buscarla en nuestro sistema. La librería se llama "libltdl.la"
Abrimos la carpeta en sistema de archivos, marcamos para que se vean todos los archivos y le damos buscar.




Ahora ya se que en mi equipo la ubicación del fichero es:
/usr/lib/i386-linux-gnu/libltdl.la
Ahora hay que editar el fichero, makefile.am cuya ruta de acceso es:
-desktop:~/opendni/trunk/src/tools
Abrimos la carpeta personal y vamos hasta él y lo abrimos con el editor de textos.

Buscamos la linea siguiente: LIBS = $(top_builddir)/src/common/libcompat.la \
En la linea siguiente añadimos una barra invertida al final
A continuación añadimos una línea nueva que incluya la ubicación de la librería: libltdl.la.
/usr/lib/i386-linux-gnu/libltdl.la

Lo que tuve que añadir en mi equipo es lo que está resaltado sobre color naranja. Guardamos el fichero y vamos al paso siguiente.
Ahora en un terminal y ejecutamos
./bootstrap
Y a continuación
./configure --prefix=/usr
Como paso final para realizar la compilación e instalación:
sudo make install

Cuando termine, abrimos Firefox y vamos a Menú-Editar-Preferencia-Avanzado-Cifrado-Dispositivos de seguridad. En la pantalla que se abre le damos a cargar nuevo módulo, e introducimos la ruta a nuestro módulo que se encontrará en:
/usr/lib/opensc-pkcs11.so



Si te ocurre como a mi que el módulo no se carga, debes borrar el fichero: secmod.db.
Para eso abres el explorador de archivos, nautilus y marcas ver los archivos ocultos.

Ahora vas hasta la carpeta .Mozilla. El punto antes del nombre indica que es oculta.

Dentro elegimos la carpeta Firefox/nuestra carpeta personal, y tenemos que borrar el fichero:
secmod.db


Hay que cerrar completamente Firefox, e incluso puede ser necesario reiniciar. Ahora repetimos los pasos para la carga del módulo y a mi me funciono perfectamente.
Si a pesar de todo esto sigue sin funcionar comprobar que la compilación se realizó sin error, ejecutándola de nuevo.
El trabajo está terminado. Ahora solo basta comprobar que todo funciona bien.
Reiniciamos Ubuntu, y vamos a la página:

Al final hay un enlace para comprobar que funciona: Comprobación de certificados

Antes de pulsar hay que tener introducido el dni en el lector, En ocasiones te puede salir un mensaje en el que te indica que la conexión no está verificada. Debes elegir entiendo los riesgos, y en la siguiente pantalla ir al sitio.
A continuación te pedirá el PIN que te han entregado con el DNI. Si no lo tienes o lo has inutilizado por introducirlo mas de 3 veces mal, o lo has perdido, debes pasar por una oficina donde realizan los DNI, para reactivarlo en las maquinas que tienen.
Una vez introducido el pin nos sale una pantalla en la que nos sale el certificado a usar para la comprobación.
El certificado se utiliza para las conexiones a la oficina virtual de la administración.
Y el resultado final, te da información de tu identidad y la validez de tus certificados

Nuestro dni también tiene la posibilidad de realizar una firma electrónica, la cual también podemos comprobar que funciona, por ejemplo creando un fichero txt de prueba, nos saldrá una pantalla en donde nos pedirá el pin y veremos el resultado.


Hay que realizar bastantes pasos, pero un vez hecho en nuestro Ubuntu 12.04, sabemos que nos puede durar los cinco años que tendrá soporte, y actualizaciones de seguridad.

Fuente
http://bitplanet.es/

32 comentarios:

  1. Muchas gracias por el tutorial, esta muy currado. Sin embargo, me he atrancado en un paso, donde dices:
    "Ahora en un terminal y ejecutamos
    ./bootstrap
    Y a continuación
    ./configure --prefix=/usr
    Como paso final para realizar la compilación e instalación:
    sudo make install"

    ¿Cómo los ejecuto? ¿Que tengo que poner en la terminal, ./bootstrap, bootstrap...? He probado pero da error.

    ResponderEliminar
    Respuestas
    1. Para que te funcionen los comandos debes estar en la carpeta donde tienes los ficheros descargados.
      Si lo haces desde terminal: cd opendni
      cd trunk
      A continuación es cuando escribes ./bootstrap, y se debe ejecutar sin dar error.
      A continuación los otros dos comandos.
      En cuanto pueda añadiré las imagenes con los comandos para que sea mas fácil seguir los pasos.

      Eliminar
    2. Gracias por contestar, finalmente lo he podido hacer tal y como me has dicho, sin embargo, al llegar al ultimo paso y comprobar el certificado, me da una pagina de error. ¿Cual puede ser el problema? Creo que he hecho todos los pasos bien.

      Eliminar
  2. Todo Ok, tuve un problema con un paso pero solucionado, funciona perfectamente. Es bastante sencillo si se siguen todos los pasos bien. Muchas gracias por el tutorial, perfecto.

    ResponderEliminar
  3. Gracias por este estupendo tutorial.
    Iba todo bien hasta que después de hacer ./bootstrap me dice:

    make: *** No hay ninguna regla para construir el objetivo «install». Alto.

    ResponderEliminar
  4. Vale, finalmente pude compilar e instalar.
    Únicamente tuve un error al verificar la firma. Me dice que el navegador no pudo realizar una firma válida.

    ResponderEliminar
  5. Todo perfecto, me ha sido muy útil y fácil seguirlo.

    Por si alguno le sale una ventana de titulo: Identificación protegida por Token. En donde se dice que te identifiques por el token, que el identificador depende del token y que el token es DNI electronico (PIN1).

    Hay que editar opencs.conf. Mediante terminal escribes:
    sudo gedit /usr/etc/opensc.conf

    Busca dos lineas que pone:
    # enable_pinpad = false;

    Borra # dejando:
    enable_pinpad = false;

    guarda y cierra.

    No está de más recordar que Los certificados del DNI electrónico caducan a los 2,5 años, por si los sale que los certificados están caducados como a mi.



    Muchas gracias, ahora podre usar mi dni-e.

    ResponderEliminar
  6. Muchísimas gracias por todo. Es un auténtico horror cada vez que actualizamos ubuntu reconfigurar nuestro dni, pero que le vamos a hacer es nuestra pesadilla... pero mira que nos gustan las pesadillas.
    Gracias

    ResponderEliminar
  7. Pues yo me quedo atascado en la siguiente parte:

    fgexxxx@LINUX:~/opendnie$ svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk
    Error validando el certificado del servidor de «https://svn.forge.morfeo-project.org:443»:
    - El nombre de máquina del certificado no coincide.
    - El certificado ha expirado.
    Información del certificado:
    - Nombre de máquina: morfeo-project.org
    - Válido desde Thu, 18 Mar 2010 09:57:43 GMT hasta Sat, 17 Mar 2012 09:57:43 GMT
    - Emisor: http://www.cacert.org, Root CA
    - "Huella": f0:73:dc:0a:01:16:fb:85:df:f4:17:9b:50:e6:55:37:2b:38:65:39
    ¿(R)echazar, aceptar (t)emporariamente o aceptar (p)ermanentemente? t
    Reino de autentificación: SVN Repositories Authentication
    Clave de «fgexxxx»:
    Reino de autentificación: SVN Repositories Authentication
    Usuario: fgexxxx
    Clave de «fgexxxx>:

    Y no hay forma de salir de ahí. En la carpeta "opendnie" no veo que se haya descargado nada ni creado la carpeta "trunk". Que hago mal o como se puede solucionar. Soy bastante nuevo en Linux.

    Gracias por vuestra respuesta.

    ResponderEliminar
    Respuestas
    1. Ahora es necesario estar registrado en Morfeo Project para poder acceder a las descargas del FTP.
      En esta página de puedes registrar.
      https://forge.morfeo-project.org/account/register.php

      Eliminar
  8. Tengo el mismo problema que Fernando...

    Me he registrado en Morfeo project, pero al intentar la descarga no me acepta el user y pass.

    He probado a buscar en la propia web de Morfeo, pero cuando busco el proyecto de opendnie me dice :
    "Permiso Denegado

    Un administrador de este proyecto tiene que darle permisos para ver esta página."

    ¿alternativas?

    Gracias.

    ResponderEliminar
    Respuestas
    1. Para intentar ayudaros en la instalación, he actualizado el post con un enlace desde donde poder descargaros en directorio que yo me baje para hacer la instalación.

      Espero que os sea útil, si tenéis problemas no dudéis en decírmelo.

      Eliminar
  9. Muy buen tutorial, muy especificado. muy clarito todo y muy fácil. Pero a la hora de realizar:
    svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk
    no hay forma de descargar nada.
    Ni registrándose en Morfeo-Forge, (pide permiso de un Administrador), ni intentándo descargar desde Dropbox https://www.dropbox.com/s/a72hfgmywz16exq/trunk.7z (no existe el archivo).
    Ni hay forma de seguir desde ese punto.
    Alguna ayuda, por favor!!!

    Muchas gracias de nuevo.

    ResponderEliminar
    Respuestas
    1. Hola Fer, todo lo que tenía en Dropbox a desaparecido, por eso no se puede descargar el archivo.
      Acabo de subirlo a Mega y espero que una vez puedas descargar el archivo te funcione el resto de la instalación.
      El enlace es:https://mega.co.nz/#!F9AgWIJI!Jb6W1CnKMfWYM31FFlGKw06ac1hGNrqM36sH30RfHKA

      Eliminar
    2. Seria bueno si dejas la clave del archivo para poder descomprimirlo

      Eliminar
    3. Disculpa, la clave es: esbuntu, tal como se indicaba en el post para la anterior descarga.

      Eliminar
  10. Gracias por el tutorial, es realmente útil. Yo tengo una pega, no me deja compilar, cuando intento el make en la terminal, obtengo error:
    +++++++++++
    xxxxxxxx@xxxxxxxx-Desk:~/Downloads/opendnie/trunk$ sudo make install
    Making install in etc
    make[1]: Entering directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    sed \
    -e 's|@pkgdatadir[@]|/usr/share/opensc|g' \
    -e 's|@DEFAULT_PCSC_PROVIDER[@]|libpcsclite.so.1|g' \
    < opensc.conf.in > opensc.conf
    make[2]: Entering directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    make install-exec-hook
    make[3]: Entering directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    sed \
    -e 's|@pkgdatadir[@]|/usr/share/opensc|g' \
    -e 's|@DEFAULT_PCSC_PROVIDER[@]|libpcsclite.so.1|g' \
    < opensc.conf.in > opensc.conf
    if [ -f "/usr/etc/opensc.conf" ]; then \
    /usr/bin/install -c -m 644 opensc.conf "/usr/etc/opensc.conf.new"; \
    else \
    /usr/bin/install -c -m 644 opensc.conf "/usr/etc/opensc.conf"; \
    fi
    /usr/bin/install: cannot create regular file ‘/usr/etc/opensc.conf’: No such file or directory
    make[3]: *** [install-exec-hook] Error 1
    make[3]: Leaving directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    make[2]: *** [install-exec-am] Error 2
    make[2]: Leaving directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    make[1]: *** [install-am] Error 2
    make[1]: Leaving directory `/home/xxxxxxxx/Downloads/opendnie/trunk/etc'
    make: *** [install-recursive] Error 1
    xxxxxxxx@xxxxxxxx-Desk:~/Downloads/opendnie/trunk$
    +++++++++++++++++++

    ¿Alguna sugerencia?

    ResponderEliminar
    Respuestas
    1. Así de primeras se me ocurre si comprobaste la ubicación de la librería libltdl.la, y modificaste el archivo makefile.am.
      Intentaré hacer pruebas para poder una mejor respuesta.

      Eliminar
    2. Gracias Mivare,
      encontré el problema y la solución, gracias por la pista.
      La diferencia con el contenido en tu tutorial es que, la línea en el makefile.am, la he tenido que cambiar a:
      $(top_builddir)/usr/lib/i386-linux-gnu/libltdl.la
      es decir, a diferencia de lo que tu expones, he tenido que especificar el prefijo, "$(top_builddir)" y ha funcionado correctamente.

      De nuevo, gracias.

      Eliminar
    3. Después de compilar e instalar, al hacer pruebas obtengo errores. Aquí va el link a un pdf con imágenes de información:https://dl.dropboxusercontent.com/u/5757787/ErroresInstalaci%C3%B3nDNIe.pdf

      Gracias.

      Eliminar
    4. Gracias por el comentario HenryGR.
      No he tenido tiempo de hacer pruebas todavía, pero en cuento lo haga te comento los resultados que obtenga.

      Eliminar
    5. He hecho unas pruebas y el error de prueba en la página del dni, a mi me ocurre si no tengo el carnet introducido en el lector.
      Antes de acceder a la página donde te vas a identificar con el dni, debes introducir el dni en el lector, en ese momento la luz que llevan los lectores debe parpadear indicando que está leyendo, y luego se queda fija. en ese momento ya se puede conectar, mientras te dará error.

      Eliminar
    6. Gracias Mivare, por tu ayuda y comentarios.
      El problema (que al final he identificado) no tiene NADA que ver con el lector, los programas de Mozilla, el linux o las páginas web, todos ellos funcionan correctamente; he visto (después de leer varias veces el mensaje de error) que el fallo está en que el certificado digital de mi DNIe está caducado. :-)

      Eliminar
    7. Mientras que el DNI tiene un validez de 10 años, los certificados solamente de 30 meses, y pasado ese tiempo hay que ir a una oficina del dni y renovarlos en unas maquinas que tienen.

      Eliminar
  11. El svn actualizado está en:
    svn checkout --username anonsvn https://forja.cenatic.es/svn/opendnie/opensc-opendnie/trunk con password: anonsvn

    ResponderEliminar
  12. Hola Mivare.
    Estoy intentando compilar según las instrucciones, en u Ubuntu 13.10 y no consigo que funcione. Para tu información, aquí tieenes dos enlaces a mi Dropbox.
    1. https://dl.dropboxusercontent.com/u/5757787/compile.log Que es una captura de los resultados de los comandos
    2. https://dl.dropboxusercontent.com/u/5757787/terminal.log Que es la captura de la terminal con los mensajes.

    Sigo buscando, pero cualquier indicación o pista, será bien recibida.

    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola HenryGR
      Creo que lo estas haciendo en un equipo instalado con Ubuntu i686.
      ¿has comprobado si tienes instalada la librería: libltdl.la?
      Prueba también con la descarga desde:
      El svn actualizado está en:
      svn checkout --username anonsvn https://forja.cenatic.es/svn/opendnie/opensc-opendnie/trunk con password: anonsvn
      Mira también en este foro de Cenatic por si encuentras algo que te sea útil
      https://forja.cenatic.es/forum/forum.php?max_rows=100&style=nested&offset=282&forum_id=497
      Espero que te sirva de ayuda y por favor comenta como te va para que sirva de ayuda a otros que puedan tener el mismo problema.

      Saludos

      Eliminar
    2. Gracias por tu rápida respuesta, Miguel.
      He comprobado que tengo bien las librerias, he intentado con la descarga que me sugieres, he intentado también con la fuente que sugieren en el sitio usatudni.es
      Después de muchas vueltas, pruebas, compilaciones, me encuentro con que hay un problema del que no me había percatado, al intentar importar el certificado ACRAIZ-SHA2.crt, Firefox me dice que ese certificado ya está instalado sin embargo, como se ve en la imagen (https%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F5757787%2FCertificados.png) no aparece en la lista y no puedo cambiar su confianza, por lo que resulta inútil. :-(
      Seguiré....

      Eliminar
    3. Estoy probando en Cubuntu 14.04, que tengo en una llave usb, y tras instalar el lector, e instalado los certificados y como puedes ver en las imágenes siguiente han quedado instalados:
      http://ubuntuone.com/2ud7ioe4TM2PUz1xIoets5
      http://ubuntuone.com/3V7dKffnoaqXae1aAfaUnd
      Una opción que no se si te es factible es borrar la carpeta de Firefox en su Home y volver a configurar completamente Firefox desde el principio.
      Fíjate que al importar los certificados primero es el la pestaña, Autoridades, que es donde te pregunta que le des las autorizaciones, y luego en la pestaña Servidores.
      Coméntame como te va, e intentaré ayudarte en lo que pueda.

      Eliminar
    4. Gracias Miguel.
      Al ver tu comentario, me he dado cuenta de que no aparece un comentario que hice hoy a mediodía (habré pulsado el botón equivocado); lo repito:

      Después de muchas pruebas, he reinstalado Firefox y continúo igual, así que he tomado el camino fácil: he desinstalado Firefox; he reiniciado el equipo; he instalado Firefox, asegurándome de que crease un nuevo perfil de usuario; he seguido el proceso desde el principio cuidadosamente; he instalado los certificados, con cuidado de que sean sólo los necesarios; he apagado (Salir - Quit) no reiniciar, el Firefox; he compilado de nuevo; he instalado el dispositivo (cargar un nuevo dispositivo); he salido y entrado nuevamente en Firefox; Funciona!
      Desconozco la razón de la corrupción en Firefox de los certificados, pero eso será para otro posr.

      Gracias.

      Eliminar
    5. Ok Henry, me alegro de que por fin de funcione.

      Eliminar
  13. Hola de nuevo.
    Solo quiero añadir una nota que considero interesante.
    Aún después de haber instalado satisfactoriamente el eDNI y haber probado con éxito su funcionamiento en las páginas de la FNMT, hay sitios que no funcionan. Hay sitios como la UNED que admiten el acceso con DNI electrónico ( y funciona) y otros como movistar.es o bbva.es que no funcionan Y NO tiene nada que ver con la instalación del GNIe, sino con la instalación del JRE de Java; simplemente, no funcionan con openjava, opnejre, etc. necesitan Oracle Java. Si necesitáis esa instalación, el enlace a leer es: http://www.ubuntugeek.com/how-to-install-java-runtime-environment-jre-in-ubuntu.html

    Saludos.

    ResponderEliminar