Uso del DNIe en Fedora 11

Hoy he intentado usar mi DNI electrónico en mi sistema operativo Fedora 11 y me entristece decir que no ha sido fácil y una vez más quedamos relegados a este gueto que es el software libre. ¿Por qué? Muy fácil, el driver del DNI electrónico no es libre y eso hace que su distribución esté totalmente ligada a un conjunto específico de versiones muy limitado de las librerías de las que depende. Cuando trabajé en el soporte del DNIe para Guadalinex v4 ya descubrimos este problema y nos resignamos a admitir que el DNIe iba a funcionar con la Guadalinex recién instalada pero probablemente dejaría de hacerlo cuando se actualizaran ciertas librerías del sistema, algo relativamente frecuente en cualquier distribución de Linux.

Parece que este problema no existe en el mundo Windows ya que las actualizaciones son mucho menos frecuentes y la gente del DNIe puede permitirse el lujo de distribuir un binario que funcionará durante al menos 3 o 4 años que es lo que suele durar una versión de este sistema operativo, frente a los 6-8 meses que duran las distribuciones de Linux. Es justo admitir que no es fácil seguir el ritmo de evolución de una distribución Linux pero también hay que recordar que este problema desaparecería si el código en cuestión fuera libre y se distribuyeran las fuentes listas para compilar con cualquier versión de las librerías implicadas.

Bueno, basta de quejas y vamos a lo que interesa, a hacer que funcione.

Lo primero es descargarnos los binarios para Fedora 10 que es lo más reciente que hay en la página de la policia. En este punto debemos sentirnos afortunados de ser usuarios de una de las tres distribuciones de Linux soportadas: Debian, Ubuntu y Fedora. La verdad, no sé como lo hará la gente de Gentoo, Suse, Mandriva, o Arch, por citar algunas de las más populares.

Desempaquetamos el tar y obtenemos dos paquetes rpm:

  • opensc-0.11.7-7.fc10.i386.rpm
  • opensc-dnie-1.4.6-2.fc10.i386.rpm

Al intentar instalar el primero tendremos un error de dependencias:

[root@ticotico ~]# rpm -Uvh --force opensc-0.11.7-7.fc10.i386.rpm
error: Error de dependencias:
libcrypto.so.7 se necesita para opensc-0.11.7-7.fc10.i386
libltdl.so.3 se necesita para opensc-0.11.7-7.fc10.i386

Y lo que está ocurriendo aquí es que las librerías libcrypto (paquete openssl) y libtdl (paquete libtool-ltdl) instaladas en mi sistema son más recientes que esas. Ahora nos toca forzar la instalación de opensc-0.11.7 aún sabiendo que es peor que opensc 0.11.8 que es la versión que ofrece Fedora 11, ya que la versión 0.11.7 tiene vulnerabilidades de seguridad. Los chicos del DNIe dicen que no liberan el código porque sería inseguro hacerlo así pero no actualizan su paquete haciendo que tengamos que usar librerías con fallos de seguridad. Una vez más, la seguridad por oscuridad triunfa. Un driver para atarnos a todos al reino de las sombras.

No nos desviemos, tras desinstalar nuestro querido opensc-0.11.8 de Fedora 11 instalaremos la versión 0.11.7:

[root@ticotico ~]# yum remove opensc
[root@ticotico ~]# rpm -Uvh --nodeps opensc-0.11.7-7.fc10.i386.rpm
Preparando...               ########################################### [100%]
   1:opensc                 ########################################### [100%]

Ahora bien, ahora tenemos que arreglar a mano el problema de las dependencias. Rezaremos para que las nuevas versiones de libcrypto y libtdll sean compatibles hacia atras. Con el comando ldd vemos si opensc tiene sus dependencias disponibles:

[root@ticotico ~]# ldd /usr/bin/opensc-tool
linux-gate.so.1 =>  (0x00525000)
libopensc.so.2 => /usr/lib/libopensc.so.2 (0x00dd8000)
libcrypto.so.7 => not found
libopenct.so.1 => /usr/lib/libopenct.so.1 (0x00d19000)
libz.so.1 => /lib/libz.so.1 (0x00318000)
libltdl.so.3 => not found
libdl.so.2 => /lib/libdl.so.2 (0x002f4000)
libscconf.so.2 => /usr/lib/libscconf.so.2 (0x00496000)
libpthread.so.0 => /lib/libpthread.so.0 (0x002fb000)
libc.so.6 => /lib/libc.so.6 (0x00157000)
/lib/ld-linux.so.2 (0x0012f000)
libcrypto.so.7 => not found
libltdl.so.3 => not found

Como era de esperar no encuentra ni libcrypto ni libtdl. Hacemos enlaces simbólicos para facilitarle la tarea:

[root@ticotico ~]# cd /usr/lib
[root@ticotico lib]# ln -s libltdl.so.7 libltdl.so.3
[root@ticotico lib]# ln -s libcrypto.so.8 libcrypto.so.7

Probamos otra vez con ldd:

[root@ticotico lib]# ldd /usr/bin/opensc-tool
linux-gate.so.1 =>  (0x009d2000)
libopensc.so.2 => /usr/lib/libopensc.so.2 (0x00670000)
libcrypto.so.7 => /usr/lib/libcrypto.so.7 (0x05e96000)
libopenct.so.1 => /usr/lib/libopenct.so.1 (0x00b19000)
libz.so.1 => /lib/libz.so.1 (0x00318000)
libltdl.so.3 => /usr/lib/libltdl.so.3 (0x063ea000)
libdl.so.2 => /lib/libdl.so.2 (0x002f4000)
libscconf.so.2 => /usr/lib/libscconf.so.2 (0x00897000)
libpthread.so.0 => /lib/libpthread.so.0 (0x002fb000)
libc.so.6 => /lib/libc.so.6 (0x00157000)
/lib/ld-linux.so.2 (0x0012f000)

Ahora ya podemos instalar el paquete del DNIe y hacerlo funcionar según las instrucciones oficiales:

[root@ticotico ~]# rpm -Uvh opensc-dnie-1.4.6-2.fc10.i386.rpm
Preparando...               ########################################### [100%]
   1:opensc-dnie            ########################################### [100%]

Ahora ya sólo nos queda validar el certificado en la página de pruebas: http://www.dnielectronico.es/como_utilizar_el_dnie/verificar.html

Actualización 29 Octubre 2009

Después de todo el follón para tener funcionando el DNIe que tuve ayer resulta que los certificados digitales que hay dentro me han caducado desde hace 4 meses. Parece que los certificados tienen una validez de 30 meses mientras que la tarjeta en sí vale para 4 años. No me preguntéis por qué, yo tampoco lo entiendo.

Así que tras haber despotricado sobre el driver del DNIe me parece justo alabar el proceso de renovación de los certificados porque aquí sí que creo que han hecho un estupendo trabajo los responsables del DNIe. He ido a la comisaría  más cercana de mi casa, en Sevilla, y aunque no estaba abierta al público aún (eran las 7:40 de la mañna) un policía bastante amable me ha preguntado que qué quería y tras explicarle lo de la renovación de los certificados del DNIe me ha dejado pasar para que lo hiciera yo mismo con un quiosco diseñado para tal fin. Una vez en el quiosco la experiencia de usuario ha sido magnífica y tras poner el dedo en el lector de huellas me ha renovado los dos certificados sin problema. Ha tardado un poco pero bueno, más vale lento pero que sea fiable y no pete. Mi satisfacción se debe por tanto a:

  1. Un estupendo trabajo con el quiosco tanto hardware como software.
  2. Un funcionario amable (el policia, en este caso) que me pregunta qué necesito y me permite usar un servicio aunque no haya comenzado el horario de atención al público.
  3. Una ausencia total de espera, en parte debido a la hora, pero también a que se elimina la intervención de funcionarios para esta tarea.
  4. Un ahorro para la administración pública al no necesitar de funcionarios para renovar estos certificados.

Tags: ,

7 Responses to “Uso del DNIe en Fedora 11”

  1. fer says:

    Vaya, esto mismo tuve que hacer yo con mi Fedora 11 para poder pedir el borrador de la declaración de la renta, eso sí, con el añadido de que yo empecé a las 10 de la noche, y el plazo acababa a las 12, jejeje. Lo que pasa es que yo soy un vago y no lo documenté en ningún lado, y tú te lo has currado! gracias!

    Eso si, me suena a mi que la instalación del “dispositivo de seguridad PKCS” no se podía hacer con la manera automática que venía en el rpm, que te mandaba a una página html local que contenía un javascript para instalarlo, porque en firefox 3.5 habían dejado de exportar esa funcionalidad por javascript y había que hacerlo a mano desde la configuración de firefox… te suena algo de eso?

  2. eduardor says:

    la gente de suse (ayto zaragoza) nos apañamos como podemos (osease malamente)

  3. lgs says:

    Fer: efectivamente, lo de incluir el módulo pkcs11 hay que hacerlo a manubrio desde Firefox 3.5: Editar -> Preferencias -> Avanzado -> Cifrado -> Dispositivos de seguridad -> Cargar y metemos la ruta /usr/lib/opensc-pkcs11.so

    Eduardor: gracias y suerte con Suse

  4. Fernando says:

    Yo he aprovechado la promoción de Tractis para hacerme con un lector. Como era previsible ha venido a palo seco (es el mismo que le han enviado a BlackJack http://cqp.blogspot.com/2009/11/dni-e.html).

    En Windows sin problemas, por supuesto, me he puesto a probarlo en mi Fedora-11 y zas, en la boca.

    El lector es un “Costar US777-A Slim”, en la web de fabricante hay drivers para linux (http://www.costar.com.tw/support/) pero los presentan en formato exe… mirando un poco he visto que es un rar autoextraible, por lo que con unrar en linux no hay problema para extraerlo.

    Una vez descomprimido nos presenta los drivers en formato RPM y Tarball. Son tres paquetes (rpm o tar.gz) de los cuales sólo es necesario el pcsc-lite ya que los otros dos (libusb y ccid) valen los paquetes oficiales. Para instalarlo:
    [root@ticotico]# rpm -ivh –oldpackage pcsc-lite-1.4.4-1.i386.rpm

    Una vez hecho esto, sólo resta seguir tus instrucciones para tener operativo el lector.

    Saludos

  5. Manuel says:

    Muchas gracias por vuestras instrucciones.
    Tengo un lector c3po ltc31 usb y un portatil con Windows 7 (que no reconoce los drivers del lector y no sigo) y doble boot con Fedora 12 X64 que me ha reconocido el lector por si solo. Bueno pues he seguido vuestras instrucciones lo mejor que he podido y con algo de imaginacion debido a que es Fedora 12 y X64 y aunque me ha fallado la pagina de validacion de dnieletronico.es he podido ir al catastro y verificar que funciona. El único problema es que me advierte que el SSL no reconoce los certificados https de estas webs y tengo que decirle que acepto el “peligro” de ir a esa páginas: Si alguien sabe como solventar esto se lo agradeceria.

    Manuel

  6. Manuel says:

    bueno mi problema ahora es que tras funcionar y rebotar la máquina, el lector no iba (luz roja) con lo que cada vez que lo quiero usar tengo que hacer :

    rpm -e –nodeps openct.x86_64
    yum install openct

    supongo que habrá algo más “elegante” porque sino vaya coñazo…

Leave a Reply