OpenDNIe para Debian Wheezy 64 bits (y Squeeze 64bits también)

Edición: Voy a revisitar/revisar este post que escribí hace casi dos años para asegurarme de que funciona a día de hoy 9 de abril de 2014.

Gracias a las instrucciones de cómo usar el DNI electrónico en Debian Wheezy de Rodrigo Aguilera me decidí, otra vez a intentar hacer funcionar el DNIe en Linux, esta vez en Debian Wheezy 64bits (testing en ese momento).

Comencé con la instalación de los paquetes sugeridos:

A continuación descargué el paquete opensc-opendnie para Debian proporcionado por OpenDNIe pero, al comprobar que el checksum no coincidía con el proporcionado, decidí optar por la compilación de los fuentes de opensc parcheados para DNIe. Y aquí empiezan los problemas.

Edición. La compilación se realiza del modo habitual en los paquetes fuente bien hechos, es decir ./configure, make y make all. El día que yo aprenda a hacer un paquete de estos escribiré otro post explicándolo.

Al ejecutar ./configure fallaba por no encontrar winscard.h. La solución estaba en este hilo:

Ahora sí terminó con éxito la ejecución de ./configure. El siguiente problema fue en la compilación. make fallaba al no encontrar el símbolo dlopen y otros.

En Squeeze 64 bits make realiza la compilación con éxito sin más acciones, por lo que se puede pasar a su instalación con make install. Nota, esto no lo he probado en la revisión del 2014, ya no tengo ningún Squeeze, pero se supone que debe seguir igual.

Para arreglar el problema de dlopen instalé la librería dl ya que como se sugería en StackOverflow había que enlazar con ella.

Pero make volvía fallar, y es que hay que incluir manualmente -ldl en la variable LDFLAGS.A continuación se ejecuta make proporcionando la variable de entorno LDFLAGS con la inclusión de la librería dl:

Ahora el problema que se presentaba era con el símbolo dnie_match_card. El caso es que el símbolo estaba en card-dnie.c, pero el símbolo no estaba definido en la librería libopensc.so (tal como indicaba el error). Mirando el código de este fichero (después de otras cosas) vi que requería openssl. Yo tenía openssl instalado, pero no libssl-dev que es lo que hacía falta.

Ahora, confirmando que quería openssl en configure, e indicando en las variables de entorno el uso de la librería dl, la compilación funcionó:

Y como root:

Ahora, continuando con el documento de referencia inicial y creamos el enlace en /usr/lib a /usr/lib/x86_64-linux-gnu/libpcsclite.so.1.

ln -s /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 /usr/lib

Ya “sólo” queda añadir el certificado de la autoridad de certificación de la DGP y el módulo creado como dispositivo de seguridad a firefox. El certificado de la autoridad de certificación raíz se encuentra en el portal oficial para el DNIe. Hay que importarlo desde la sección de certificados de autoridades de certificación (preferencias -> avanzado -> encriptación -> ver certificados -> autoridades -> import y seleccionar confiar en el certificado para sitios web, direcciones de correo electrónico y software).

Para agregar el módulo creado a firefox tuve que tirar del último apartado de otras instrucciones para el DNIe donde se proporcionaba el siguiente comando (ejecutar como el usuario final, no como root). Debe ejecutarse con firefox cerrado.

En el caso de que no exista el comando modutil se instala con el paquete libnss3-tools:

Añadido: Para que el comando modutil funcionara tuve que hacer un par de enlaces simbólicos (hay más soluciones pero esta me pareció la más directa):

 

Y ahora se puede importar el módulo desde el apartado dispositivos de la pestaña de configuración de cifrado de firefox. Para ello se pulsa en cargar y se proporciona la ruta /usr/local/lib/opensc-pkcs11.so, que es donde la instalación de los fuentes deposita el módulo si no se indica otra ruta.

Una vez hecho esto, reiniciando Iceweasel/Firefox pude, por primera vez de nuevo, utilizar el DNIe en Linux.

Nota. Es necesario tener el plugin de Java habilitado en Iceweasel/Firefox para poder utilizar el DNIe.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *