20110212

Compilación de OpenDNIe para Mac OS X

Tras enterarme de la presentación en sociedad de OpenDNIe, driver de código abierto para el manejo del DNI electrónico, y comprobar que se basa en incluir soporte para el DNIe en OpenSC, proyecto que funciona también en Mac OS X, decidí intentar compilarlo para mi equipo.
Lo que se describen a continuación son los pasos para compilar e instalar OpenSC 0.12.1 con OpenDNIe, usando el código fuente disponible aquí. Durante el proceso, gracias a lo bien que están las cosas en OpenSC, también se genera un paquete de instalación para Mac OS X y una imagen de disco con el mismo, que he dejado disponible aquí para quien no tenga los medios, los conocimientos o las ganas de hacer esto, y mientras no haya una versión oficial en OpenSC.

NOTA: La parte de esta entrada relativa a la compilación ha quedado obsoleta en OS X Mountain Lion. Hay una nueva entrada aquí con todos los detalles.



Requerimientos previos
Aunque el código fuente de OpenSC está bastante bien preparado para compilarse, existen algunas herramientas que deben instalarse (además del entorno de desarrollo de Apple), ya que la versión que ofrece Apple por defecto de GNU autoconf automake y libtool, no son las más recientes y no funcionan correctamente).
Además, para poder hacer la creación completa del paquete de instalación de OpenSC, hace falta tener instalado Git.
En resumen, el primer paso consiste en preparar el entorno de desarrollo de Apple, que viene incluido con los discos de instalación del sistema operativo, o se puede descargar desde http://developer.apple.com/tools/xcode/.
A continuación se debe instalar una versión más actualizada de las herramientas indicadas. Para mí lo más cómodo es hacerlo usando MacPorts:
$ sudo port install autoconf
$ sudo port install automake
$ sudo port install libtool +universal
$ sudo port install git-core +universal
Nota: En las últimas versiones de Mac OS X (creo que a partir de la 10.6.5),git-core requiere haber instalado previamente "Java for Mac OS X 10.6 Update 3 Developer Package", disponible de forma gratuita en la web para desarrolladores de Apple).
Nota2: Tal y como indican en los comentarios, la instalación de git-core es necesaria en el caso de usar XCode 3.x. En el caso de XCode 4.x, en su lugar hacen falta pkgconfig y curl.
También es posible hacer esta instalación usando Porticus, una interfaz gráfica para MacPorts.


Compilación e instalación
Teniendo estos requisitos instalados, la compilación e instalación del software de OpenSC-OpenDNIe es bastante sencilla. Creamos un directorio de trabajo (¡ojo! la ruta completa a este directorio no debe incluir espacios o caracteres extraños), descargamos en el mismo la última versión del software y utilizamos los scripts de compilación e instalación incluídos:
$ mkdir workspace
$ cd workspace
$ svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk
NOTA IMPORTANTE para OS X 10.7.x: Según la versión de OpenDNIe y la de OS X Lion, puede que los scripts de comprobación del paquete de instalación no detecten correctamente el sistema operativo (por ej. la versión 0.12.3 svn 412 no detecta la versión 10.7.1 de OS X, pero sí la 10.7.0).
Para corregirlo (en el caso de OS X 10.7.1), se debe editar el archivo en ./MacOSX/build/10.6/scripts/InstallationCheck, cambiando las líneas de la forma

# 10.6 system must be active
if(CheckVersion("$SYSTEM_VERS", "10.7.0", "ProductVersion", ">")) {

por

# 10.6 system must be active
if(CheckVersion("$SYSTEM_VERS", "10.7.1", "ProductVersion", ">")) {

Una vez corregido el script de instalación (si fuera necesario), compilamos.
$ cd trunk
$ sudo ./MacOSX/build
Una vez haya terminado, tendremos instalado el software en nuestro equipo, y además habrá creado en el mismo directorio tanto el paquete de instalación como una imagen de disco con el mismo. También se instala un script de desinstalación por si quisiéramos eliminar OpenSC del equipo y que se puede invocar desde la Terminal (sudo opensc-uninstall)
Es aconsejable reniciar el equipo tras la instalación. A partir de este momento, ya será posible utilizar un lector de DNIe en nuestro Mac. Para comprobar que está funcionando, tras conectar el lector al ordenador e insertar un DNIe, usar el siguiente comando:
/Library/OpenSC/bin/opensc-tool -D
Y comprobar que los mensajes son correctos (aquí hay más información).


Integración en Firefox
A continuación podemos añadir el módulo de OpenSC a Firefox para poder usar el lector de DNIe para acceder a distintos sitios web. Para ello, acceder a las preferencias avanzadas del navegador:
Pulsar en el botón "Dispositivos de seguridad" y aparecerá una nueva ventana:
En esta, pulsar en el botón "Cargar".
Introducir si queremos un nuevo nombre para el módulo (yo he puesto DNIe), e indicar la siguiente ruta:
/Library/OpenSC/lib/opensc-pkcs11.so
También, si no lo hubiéramos hecho ya, será necesario añadir a Firefox los certificados raíz de la Fábrica de Moneda y Timbre y del DNI electrónico. Esto es algo que está bien explicado en muchos sitios, por ejemplo, aquí y aquí.
Ahora, a modo de prueba, se puede acceder a la página web de comprobación:
http://www.dnielectronico.es/como_utilizar_el_dnie/verificar.html


Como nota final una advertencia: aunque el software que hemos instalado funcione correctamente, los sitios a los que accedadmos desde el Mac no tienen por qué hacerlo. Existen sitios de bancos, cajas de ahorros, etc. que dicen estar preprados para acceder con DNI electrónico, etc. y puede que incluso mencionen al Mac pero luego en realidad sólo están diseñados y probados en Windows y no funcionan con otros (Mac, Linux). Esto no suele ser así con las administraciones públicas, donde en general sí que parece ir todo bien.

14 comentarios:

  1. Hola:

    Soy Juan Antonio Martínez (jonsito); el "padre" de la criatura.

    Con tu permiso voy a enlazar y utilizar tu entrada en los Blogs de Cenatic y Kriptópolis. Por supuesto, con los créditos y referencias correspondientes....

    Gracias por la información. Y gracias por usar OpenDNIe

    Juan Antonio

    ResponderEliminar
  2. Hola Juan Antonio
    gracias a tí por haber estado trabajando en este proyecto tan interesante. Enlaza lo que quieras ;-)

    ResponderEliminar
  3. Muchas gracias por tu trabajo. Gracias a ti he conseguido hacer funcionar mi DNIe

    ResponderEliminar
  4. Muchas gracias.

    Un apunte.
    Si ya tienes xcode 4, no necesitas "git-core", pero si es necesario instalar "pkgconfig" y "curl". Y te ahorras muchisimas dependencias, espacio en disco y tiempo ;).

    ResponderEliminar
  5. @Roberto: Muchas gracias. Ya he añadido una nota más arriba explicando ese paso.

    ResponderEliminar
  6. Funciona ! Muchísimas gracias !

    Además a mi me ha funcionado primero con Firefox 3 y luego con Firefox 4. Al actualizar el navegador no funcionó a la primera, pero sí al recompilar opensc. Eso sí, no puedo decir si es que realmente hace falta recompilar o toqué alguna otra cosa al mismo tiempo.

    ResponderEliminar
  7. @abranzyck: Puede ser que hicieras algo más. Yo tengo instalados Firefox 3 y Firefox 4 a la vez y me funciona correctamente en los dos.

    ResponderEliminar
  8. Hola:

    Tenéis instrucciones actualizadas en la Wiki del Proyecto OpenDNIe.

    http://opendnie.cenatic.es/wiki/index.php/Documentacion_OpenDNIe_Instalacion_MacOSX

    Se admiten criticas, mejoras y sugerencias. Gracias

    Juan Antonio

    ResponderEliminar
  9. #Jonsy Gaviota

    He echado un vistazo a la wiki de OpenDNIe. Precisamente ayer estuve comprobando que las últimas versiones se hablan bien con tokend en Mac OS X y logré algo que no era posible ¡configurar Mac OS X para validar una sesión de usuario usando el DNIe!

    Estaba preparándolo en para explicarlo por aquí en una futura entrada del blog, pero no se si sería interesante en su lugar añadirlo al wiki de OpenDNIe. ¿Qué te parece?

    Un saludo
    kounch

    ResponderEliminar
  10. Creo que se puede hacer algo mixto: dado que el artículo es tuyo, lo puedes publicar como algo específico para MacOSX en tu blog, y luego lo adaptamos (proper credits provided) a la estructura del wiki, de forma que quede integrado dentro de una sección genérica "Inicio de Sesion con DNIe"

    Nota mental: editar la sección de pam_pkcs11 para login con DNIe en linux... y cuando sepa cómo, tocar el Gina para windows...

    Por cierto... tengo un problema con la web de validación de la DGP cuando entro con Safari: autentica, pero no firma. Con Firefox no tengo ningun problema... Entiendo por lo que comentas y por lo que he probado que el problema es de la página y no de Tokend. ¿me lo podrías confirmar?

    Un saludo y gracias por la oferta

    Juan Antonio

    ResponderEliminar
  11. #Jonsy Gaviota

    De acuerdo. Este fin de semana estoy de viaje, así que la semana que viene me pondré con ello.

    Sobre el problema de firma, o es de la página, o es de Safari, pero no creo que seta de tokend. Pienso que es así porque lo mismo sucede, en general, con los certificados de FNMT que puedes obtener aparte e instalar en el navegador. Puedes acceder a páginas pero no funciona la firma.

    ResponderEliminar
  12. Actualización breve. He visto que las últimas versiones de SVN de OpenDNIe no se dejan instalar en OS X Lion 10.7.1, debido a las comprobaciones de versión del script de instalación. He hecho una pequeña actualización explicando cómo evitarlo, y de paso he actualizado mi versión compilada para que lo incluya.

    ResponderEliminar
  13. Muy buenas.
    ¿Sabéis si es posible el funcionamiento del lector con Mountain Lion (10.8.2)? Estoy intentando aprovechar un lector que tenía abandonado de mi época PeCera y estoy leyendo bastante información de versiones 10.5 y 10.6. Solo el pequeño añadido que hace Kounch sobre la instalación del 10.7.1
    Un saludo para todos.

    ResponderEliminar