Instalación de DNI electrónico (DNIe) en Debian Squeeze

No sé si es la mejor manera de hacerlo, he probado diversas maneras sin éxito, al final he conseguido que funcione, a continuación pongo los pasos que creo que deberían seguirse (saltándome los que me han fallado) y supongo que debería funcionar.

Se agradecen comentarios.

1.- Instalar el lector

sudo apt-get install pcscd pcsc-tools mozilla-opensc pinentry-gtk2

2.- Comprobar que el lector funciona: pinchar el lector USB con el DNI metido, y escribir

pcsc_scan

la salida debería mostrar al final:

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
3B 7F 38 00 00 00 6A 44 4E 49 65 [1,2]0 02 4C 34 01 13 03 90 00
    DNI electronico (Spanish electronic ID card)
    http://www.dnielectronico.es

Salimos con Ctrl+C y desconecto el lector de DNI.

3.- Instalar los paquetes de DNI electrónico, para Debian: vamos a usar los de Debian Lenny, y la versión 1.4.6 (versiones posteriores no incluyen los paquetes dependientes, sólo el de opendnie, y no he conseguido hacerlo funcionar)

wget http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/1.4.6.Debian_Lenny_32/Debian_Lenny_opensc-dnie_1.4.6-2_i386.deb.tar
tar -xvf Debian_Lenny_opensc-dnie_1.4.6-2_i386.deb.tar
sudo nano /etc/apt/sources.list

(editamos el fichero de fuentes y cambiamos todo lo que ponga “squeeze” o “stable” a “lenny”). Guardamos con ctrl+o y salimos con ctrl+x

sudo apt-get update
sudo dpkg -i opensc_0.11.7-7_i386.deb
sudo dpkg -i libopensc2_0.11.7-7_i386.deb
sudo dpkg -i opensc-dnie_1.4.6-2_i386.deb

4.- Registrar módulo y certificados en Iceweasel

Aplicaciones >> Oficina >> Registrar módulo DNIe PKCS#11

Aparece una información. Indica pulsar aceptar, pero yo no veo botón aceptar.
Cierro Firefox y comienza automáticamente la instalación del certificado.
Acepto el certificado marcando las 3 casillas.
Cierro firefox otra vez.
Abro Firefox. Voy a Editar >> Preferencias >> avanzado >> Cifrado >> Dispositivos de seguridad.
No veo DNIe, así que le doy a Cargar, pongo el nombre DNIe y la ruta al archivo /usr/lib/opensc-pkcs11.so
Cierro firefox. Vuelvo a conectar el lector del DNI con el DNI metido.
Abro firefox y debería funcionar.

5.- Bloquear las actualizaciones de paquetes de lenny.

sudo echo libopensc2 hold | dpkg --set-selections
sudo echo opensc hold | dpkg --set-selections
sudo aptitude hold libopensc2 opensc

Vuelvo a poner los repositorios de Squeeze

sudo nano /etc/apt/sources.list

y cambio lenny por squeeze o stable (como estuviera)
grabo con ctrl+o y salgo con ctrl+x
Actualizo:

sudo apt-get update
sudo apt-get upgrade -u

(debería indicar los 2 paquetes retenidos, y no actualizar nada).

Problemas encontrados

  • Al principio pensé que funcionaría instalando opensc y libopensc2 de los repos de squeeze, y la versión opensc-dnie_1.4.8-1_i386.deb, pero no funciona.
  • Quizá funcione la combinación opensc_0.11.7-7_i386.deb + libopensc2_0.11.7-7_i386.deb + opensc-dnie_1.4.8-1_i386.deb, no lo he probado.
  • Tras hacer las instalaciones y configuraciones me encontraba que aun cargando el módulo en Iceweasel, al enchufar el lector de DNI, me reconocía el lector pero indicaba “no presente”. Lo resolví borrando mi perfil de iceweasel con Alt+F2 >> iceweasel -profilemanager. Al abrir iceweasel se crea un perfil nuevo que no tenía ni el módulo ni los certificados, y realicé el paso 4. Esta vez sí me indicaba que el lector estaba presente.
  • He leído algo de OpenDNIe pero fue lo primero que intenté y no sabía qué tenía que hacer. Al instalar el paquete me indicaba que había dependencias incumplidas. Intentaré OpenDNIe en Wheezy y si puedo os cuento en otro post.

¡Saludos!

About larjona

My name is Laura Arjona, I am a libre software user and fan of the free culture. If you want to contact me you can write an email to larjona [at] larjona [dot] net I am @larjona at identi.ca in the Pump.io social network. --- Me llamo Laura Arjona, soy usuaria de software libre y fan de la cultura libre. Si quieres contactar conmigo puedes escribir a larjona [en] larjona [punto] net Soy @larjona en el servidor identi.ca, de la red social Pump.io.
This entry was posted in My experiences and opinion and tagged , , . Bookmark the permalink.

14 Responses to Instalación de DNI electrónico (DNIe) en Debian Squeeze

  1. Te aseguro que OpenDNIe funciona mucho mejor que los drivers oficiales.
    Simplemente varios consejos antes de instalar OpenDNIe:

    – La web oficial (blog, wiki, y forja)
    http://opendnie.cenatic.es

    – Usa siempre la _ultima_versión_ . Tienes un repositorio de autobuilds en:
    http://www.opensc-project.org/downloads/nightly/opendnie/
    ( Donde tienes tambien las versiones Mac y Windows. En el caso de Linux tienes el tarball .tgz )

    – Sigue al pie de la letra las instrucciones de instalación:
    http://opendnie.cenatic.es/wiki/index.php/Documentacion_OpenDNIe_Instalacion_Linux

    Especialmente donde dice que debes borrar todo rastro de instalaciones anteriores (incluyendo ficheros de configuración). En concreto debes asegurarte que no están ni opensc, ni libopensc, ni opensc-dnie, ni /etc/opensc*, opensc-devel o mozilla-signer-plugin

    – Ante la duda, siempre tienes los paquetes debian en la web🙂
    http://forja.cenatic.es/frs/?group_id=160

    – Y por supuesto, no te cortes a la hora de usar los foros y pedir ayuda

  2. Hola, soy Ignacio Agulló Sousa y llevo dieciocho puñeteros meses intentando que me funcione el DNIe con Debian y Ubuntu, sin resultado.
    Soy un profesional de la informática, así que sé que todos los problemas se acaban resolviendo; no pierdo la esperanza. Le agradezco a Juan Antonio Martínez que desarrollara OpenDNIe, y a larjona que escribiera este artículo. Sin embargo, la cosa sigue sin funcionar. Como desgraciadamente el sitio web oficial de OpenDNIe no ofrece ninguna dirección de correo electrónico ni ningún medio alternativo de enviar consultas, este comentario servirá para notificar a ambos sobre qué es lo que falla al tratar de instalar en la potente distribución Debian Squeeze.

    Para larjona: Todo va bien hasta llegar al punto 3…:
    tar -zxvf Debian_Lenny_opensc-dnie_1.4.6-2_i386.deb.tar
    gzip: stdin: not in gzip format
    tar: Child returned status 1
    tar: Error is not recoverable: exiting now

    Para Juan Antonio:
    -El sitio web oficial del OpenDNIe no se muestra forma alguna de remitir consultas, o si lo hace bien escondida que la tiene.
    -Las instrucciones de instalación para Debian recomiendan que se instale el paquete “libopenct-dev”, sin embargo el único que yo encuentro es “libopenct1-dev”.
    -Lo de “Especialmente donde dice que debes borrar todo rastro de instalaciones anteriores (incluyendo ficheros de configuración)” que indicas en tu comentario no lo había visto hasta ahora. Ahora veo que dice “Antes de empezar hay que asegurarse de que no hay ninguna instalación previa de opensc o de paquetes del dnie de versiones anteriores. Específicamente, no deben existir los ficheros /usr/lib/libopensc*”, pero como lo pone bajo “Sistemas OpenSUSE”, lo había pasado por alto hasta ahora.
    -Las instrucciones de instalación piden que se ejecute el mandato “./bootstrap”, sin embargo no funciona hasta que se hace “cd trunk”
    -Las instrucciones de instalación dicen “Una vez instalada, será necesario instalar los certificados de la DGP, módulo pkcs#11 en Firefox/Mozilla, etc siguiendo los procedimientos habituales descritos en la Web http://www.dnielectronico.es“. No encuentro ésto. Con la instalación vieja, se instalaba en el menú “Ofimática” automáticamente la opción “Registrar módulo DNIe PKCS#11”, que ejecutaba “/usr/share/opensc-dnie/inst_pkcs11_cert.pl”, lo que debe ser un programa interpretado en lenguaje Perl; con OpenDNIe esta opción no se incorpora al menú, ni el fichero “inst_pkcs11_cert.pl” está localizable. Intento encontrar en la web, pero no estoy seguro de qué se trata. Llamo al servicio de atención al ciudadano, pero no saben decírmelo.

    • larjona says:

      Hola Ignacio.
      Tienes razón, gracias por el aviso.
      La línea para descomprimir debe ser:
      tar -xvf Debian_Lenny_opensc-dnie_1.4.6-2_i386.deb.tar
      Ya lo he corregido en el post.
      Si encuentras algún fallo más indícamelo.
      Muchas gracias y ¡suerte!

      • Gracias por tu atención, larjona. Ahora llego más lejos, pero sigo sin conseguirlo.
        La línea de tar corregida ya funciona sin problemas, así que puedo seguir adelante con el punto 3 y siguientes. Al hacerlo, me encuentro con un pequeño inconveniente: mi ordenador es de 64 bits y los paquetes de 32 bits no le sirven. La solución es encontrar en el sitio web oficial del DNI electrónico (www.dnielectronico.es) el fichero que contiene los paquetes adecuados para 64 bits. Por cierto, que este sitio contiene además ficheros .sign para verificar la autenticidad de los ficheros .tar a descargar; da igual la versión con la que pruebe, siempre que selecciono descargar estos ficheros .sign, Debian me ofrece abrirlos con la aplicación de verificación de firma y al aceptar me pide que seleccione el fichero a comprobar, pero cuando selecciono el fichero .tar correspondiente me dice que no hay datos, así que su autenticidad se queda sin verificar.
        Una vez descargado el fichero tar y ejecutado “tar -xvf”, dispongo de los paquetes para 64 bits, que resulta que tienen el mismo nombre que los de 32 bits pero en vez de terminar en “i386.deb”, terminan en “amd64.deb”. Salvo este cambio de nombre, el resto de la instalación se realiza exactamente igual que describe la guía de larjona y sin problema aparente. Sin embargo a la hora de la verdad la aplicación (una aplicación propia que lee la tarjeta a través de un applet de Java) da el mismo error que cuando la tarjeta no se encuentra presente en el lector.
        Dado que larjona indica “Quizá funcione la combinación opensc_0.11.7-7_i386.deb + libopensc2_0.11.7-7_i386.deb + opensc-dnie_1.4.8-1_i386.deb”, pruebo a repetir el punto 3 con esta otra versión, pero da el mismo resultado.
        Hay que decir que sobre Windows NT todo funciona bien con cualquier navegador, y tengo instalados cinco: Explorer, Firefox, Opera, Chrome y Safari.
        Recapitulemos:
        a) Las máquinas son un Intel 2 Core Duo E6550, y un lector de tarjetas gemalto.
        b) El sistema operativo es Debian Squeeze para AMD 64 bits (sí, funciona también sobre Intel, y de hecho muy bien).
        c) El mandato pcsc_scan detecta la tarjeta y lee su identificador numérico, así que el aparato funciona bien.
        d) El navegador es Iceweasel 4.0
        e) El entorno de ejecución de Java es Java SE 6 Update 24, la versión actual de Java oficial disponible en los repositorios de Debian (la versión actual de Java SE 6 es la 26, pero Oracle suministra Java en paquetes rpm; Debian incorpora a sus repositorios la versión en paquetes deb un cierto tiempo después, de ahí que lleve dos versiones de retraso; quizás debería aprender de Ubuntu, que actualmente ya dispone de los paquetes deb de la versión 26).
        Lo único que se me ocurre es lo que indica larjona al final de su guía: “Tras hacer las instalaciones y configuraciones me encontraba que aun cargando el módulo en Iceweasel, al enchufar el lector de DNI, me reconocía el lector pero indicaba “no presente”. ” Pero no sé dónde se comprueba ésto, cómo se sabe si se carga el módulo en Iceweasel y dónde indica si el lector está presente o no.

  3. larjona says:

    Hola Ignacio
    Para ver si Iceweasel establece como “no presente” el lector, puedes ir Editar >> Preferencias >> avanzado >> Cifrado >> Dispositivos de seguridad.
    En la parte de la izquierda busca DNIe, y en la derecha, se debe ver el nombre del módulo (DNIe) y la ruta (yo tengo /usr/lib/opensc-pkcs11.so).
    En la parte de la izquierda de nuevo, como subramas dentro de DNIe, ahora que no tengo el dispositivo conectado, aparecen varios “Virtual slot”, y pinchando en cada uno, en la parte de la derecha, aparece “Estado” = “no presente”, y luego “Descripción”, “Fabricante”, “Version HW” y “Versión FW”. Estos apartados son los que aparecen “rellenos” con los datos de tu lector, si está conectado y Iceweasel lo detecta correctamente. A mí seguían sin aparecerme aunque conectara el lector, y se resolvió reiniciando el ordenador y creando un nuevo perfil de Iceweasel.
    ¡Suerte!

  4. Pues… gracias por tu atención, pero sigue sin ir. Cuando borro perfiles de firefox y creo otros nuevos, se repite lo mismo. Hasta probé a reiniciar el ordenador como sugieres, a pesar de que sé que el Linux eso casi nunca sirve de nada; para que veas hasta dónde estoy dispuesto a llegar. Al menos ahora sabemos dónde está el problema con exactitud.
    -Va bien: pscs_scan detecta una tarjeta “DNI electronico (Spanish electronic ID card)”. Esto significa que el sistema reconoce adecuadamente el lector de tarjetas.
    -Va bien: Firefox registra el módulo DNIe PKCS#11, en Preferencias -> Avanzado -> Cifrado -> Ver certificados -> Autoridades, vemos “DIRECCION GENERAL DE LA POLICIA. AC RAIZ DNIE”, así, sin tildes. Esto significa que que el sistema reconoce adecuadamente la autoridad de certificación de la DGT, que es la que certifica la validez nuestro DNIe.
    -Va mal: Firefox no detecta las tarjetas introducidas en el lector, en Preferencias -> Avanzado -> Cifrado -> Dispositivos de Seguridad, aparece ocho veces “OpenCT reader (detached)”, con Estado “No presente”, cuatro veces “Gemplus GemPC Twin 00 00” con Estado “No presente” y cuatro “Virtual slot” con Estado “No presente”. Esto significa que Firefox reconoce el lector de tarjetas, pero no nuestro DNIe.
    La versión de opensc-dnie con la que he hecho estas pruebas es la 1.4.6-2 de 64 bits para Debian Lenny.

  5. larjona says:

    Hola Ignacio
    En algún foro han comentado que el problema de Iceweasel/Firefox indicando “No presente” ocurre cuando se registra el módulo PKCS11 con Firefox abierto. (El paso de registrar el módulo en realidad son 2: registrar el módulo e incluir los certificados). ¿Has probado a cargar el módulo manualmente? (Abrir Iceweasel, Voy a Editar >> Preferencias >> avanzado >> Cifrado >> Dispositivos de seguridad. No veo DNIe, así que le doy a Cargar, pongo el nombre DNIe y la ruta al archivo /usr/lib/opensc-pkcs11.so. Cierro Iceweasel . Vuelvo a conectar el lector del DNI con el DNI metido.)

    Por otro lado, he visto que para Debian64 la última versión de DNIe sí que tiene los paquetes dependientes (para 32bits no), así que quizá puedas desinstalar todo y empezar de nuevo pero con la versión1.4.8
    http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc-dnie_1.4.8_amd64_lenny.tar
    (Desinstalar todo supondría abrir Iceweasel y “descargar” el módulo PKCS11, eliminar de Iceweasel los certificados y todo lo relacionado con DNIe, y eliminar los paquetes que se han instalado con dpkg o apt).

    Espero en unos días probar OpenDNIe y que de menos dolores de cabeza, si consigo hacerlo funcionar escribiré otro post.
    ¡Suerte!

  6. Pues…, gracias por el interés, larjona, pero sigue sin ir. Me encuentro con las siguientes dificultades:
    -Cada vez que retiro el lector de tarjetas del puerto USB, el mandato pcsc_scan deja de detectarlo (lógico) incluso después de volverlo a conectar (ilógico). No sé con certeza si ésto afecta, pero dado que se pretende precisamente detectar el DNIe, lo considero un problema que hay que resolver antes de continuar. Así que cada vez que reconecto el lector de tarjetas, para que vuelva a ser detectado, no basta con cerrar sesión y volverla a abrir… ¡tengo que reiniciar Debian! Con los sistemas operativos de Microsoft ésto no pasa. ¿Porqué “Retirar dispositivo con seguridad” sólo está disponible en Debian para las memorias USB, y no para el resto de dispositivos?
    -Cuando utilizo el item del menú Ofimática “Registrar módulo DNIe PKCS#11” para instalar el módulo y fallo en obtener resultados, y trato de probar a instalar el módulo manualmente, no puedo hacerlo a no ser que primero borre el perfil de Iceweasel y después cree otro.

    Aparte de estas dificultades, los resultados que observo son los mismos:
    -Después de ejecutar “Registrar módulo DNIe PKCS#11”, y de dar permiso para ejecutar el programa interpretado, se me muestra en Iceweasel la página que me advierte que al cerrar Iceweasel se instalará automáticamente el certificado de la DGT; cierro la ventana de Iceweasel, y entonces inmediatamente se abre una ventana nueva más una caja de diálogo con las tres casillas que hay que marcar para otorgar nuestra confianza al certificado. Entonces en Preferencias -> Avanzado -> Cifrado -> Dispositivos de Seguridad, puedo ver ocho veces “OpenCT reader (detached)”, con Estado “No presente”, y varios “Virtual slot” con Estado “No presente”. También puedo ver que la ruta, como corresponde a un paquete de 64 bits, no es “/usr/lib/opensc-pkcs11.so” sino “/usr/lib64/opensc-pkcs11.so”.
    -Después, cierro Iceweasel, conecto el lector de tarjetas con el DNIe dentro y vuelvo a abrir Iceweasel; entonces, además de lo anterior, veo cuatro veces “Gemplus GemPC Twin 00 00″ con Estado “No presente”.

    Me dices que “quizá puedas desinstalar todo y empezar de nuevo pero con la versión1.4.8”, y añades “(Desinstalar todo supondría abrir Iceweasel y “descargar” el módulo PKCS11, eliminar de Iceweasel los certificados y todo lo relacionado con DNIe, y eliminar los paquetes que se han instalado con dpkg o apt).”. Lo he hecho y he comprobado que al instalar la versión 1.4.8 del paquete opensc-dnie_1.4.8-1_amd64 se instalan también los paquetes libopensc2 y opensc, pero no los de lenny sino los de squeeze; es decir, los actuales. Sin embargo, el resultado es el mismo.

  7. Un dato más: incluso en un perfil nuevo que no tiene instalado el módulo PKCS#11, Iceweasel sabe si tiene un lector conectado o no. Si lo iniciamos con el mandato “iceweasel -profilemanager” y tras modificar los perfiles escogemos iniciar Iceweasel, muestra lo siguiente:

    [opensc-pkcs11] reader-pcsc.c:896:pcsc_detect_readers: SCardListReaders failed: 0x8010002e
    [opensc-pkcs11] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found

    …y si tenemos conectado el lector con el DNIe, no lo muestra (repito, incluso sin haber instalado el módulo PKCS#11).

  8. Pingback: Instalar el DNI electrónico en Debian Squeeze | El sitio de Ho Tse Chu

  9. ruralclash says:

    Si pscs_scan detecta lector y DNIe pero en Iceweasel aparece como “No presente”, tal vez se deba a que pscsd no encuentra la librería libpcsclite.so.1

    Quiero decir, yo uso Debian Testing y pscsd busca esa librería en /usr/lib/ pero en realidad está en /usr/lib/i386-linux-gnu/

    Yo lo solucioné creando el siguiente enlace simbólico:

    $ su –
    # ln -s /usr/lib/i386-linux-gnu/libpcsclite.so.1 /usr/lib/libpcsclite.so.1

    Suerte. Yo tardé siete horas en descubrirlo…

  10. Pingback: Instalar el DNI electrónico en Debian Squeeze | Aulacero21Aulacero21

  11. Pingback: New year plans on libre software | The bright side

  12. Bueno, finalmente me funciona el DNI electrónico en Ubuntu. No en todos los sitios, pero en la Seguridad Social y la Agencia Tributaria sí. Gracias Larjona por tu parte de ayuda,

Comments are closed.