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:

apt-get install pcscd pcsc-tools pinentry-gtk2

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:

apt-get install libpcsclite-dev

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.

apt-get install libdlrestrictions-dev

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:

export LDFLAGS=-ldl ; ./configure ; make

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.

apt-get install libssl-dev

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ó:

export LDFLAGS=-ldl; ./configure --enable-openssl
make

Y como root:

make install

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.

modutil -dbdir ~/.mozilla/firefox/$(cat ~/.mozilla/firefox/profiles.ini | grep Path | awk -F"=" '{print $2}') -add "DNIe" -libfile /usr/lib/opensc-pkcs11.so

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

apt-get install 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):

ln -s /usr/local/lib/opensc-pkcs11.so /usr/lib/
ln -s /usr/local/lib/libopensc.so.3 /usr/lib/

 

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.

Dejar una respuesta

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

Puedes utilizar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.