El DNIe en OpenSuse 11.3 paso a paso
Por Alexandre el jueves 27 Enero 2011, 15:51 - Software libre - Enlace permanente
Nuestros colegas informáticos del Cuerpo Nacional de Policía llevan el tema del DNI Electrónico (DNIe) bastante mal.
Primero porque comenzaron robando código libre del proyecto openSC y usándolo durante dos años como quien no quiere la cosa. Luego porque cuando se vieron forzados a liberarlo lo hicieron de manera parcial y chapucera. Finalmente porque, aunque distribuyen paquetes precompilados para algunas distribuciones, no los mantienen y obligan a utilizar versiones antiguas del OpenSC (ya ni hablar de dar soporte).
Así que voy a poner aquí como conseguir que el dichoso DNIe funcione en OpenSuse 11.3. Pasos:
- Eliminar cualquier instalación de opensc, libopensc de nuestro sistema (que probablemente está en la versión 0.11.13).
- Descargar opensc-0.11.9
de aquí y hacer los pasos usuales para compilar por consola. Tiene que ser
este y no otro. (Hay que tener las librerías, los paquetes -devel etc que sean
necesarios o sino el configure se quejará):
$> tar -xf opensc-0.11.9
$> cd opensc-0.11.9
$> ./configure --prefix=/usr --enable-pcsc
$> make
$> sudo make install
- Descargar el paquete
ofrecido en www.dnie.es para
openSuse 11.2. (a día de hoy 1.4.8) e instalarlo:
$> yast2 --install opensc-dnie-1.4.8-1.i586_suse.rpm
Cuidado: hay que forzar que no se instalen las dependencias de opensc poniéndolas en tabu, o forzar la instalación pese a dependencias si lo haces con "rpm -i". - Seguidamente, como root, copiar el archivo de configuración a su buen lugar
(no hacer caso al instalador que dice que lo ha copiado solito).
$> cd /usr/etc
$> cp /usr/share/opensc-dnie/opensc.conf.dnie opensc.conf
$> cp opensc.conf /etc/opensc.conf
Al ser una instalación manual de opensc se está usando el de /usr/etc (a saber por qué), pero no está de más tenerlo también en /etc, dónde se supone que sí se debería haber copiado sólo, pero mejor curarse en salud. - Si no se ha hecho ya, se puede ejecutar el paso de "Registrar módule DNIe PKCS#11" para el Firefox desde el acceso directo del menú de "Oficina". Atención: la ruta que ellos mismos ponen para instalar la autoridad certificadora está mal. Mi consejo es instalar las que dan ellos en su web, y no la que viene (que se llama "ac_raiz_dnie.crt" en realidad). En la web están aquí.
- Probamos. Para saber que se ha instalado bien el driver y que opensc lo
encuentra:
$>opensc-tool -D
Debe devolver el driver dnie. - También podemos probar si ya se leen los datos del DNIe:
Iniciando el demonio del lector de tarjetas con usuario root:
$>pcscd
Y con la utilidad pkcs11-tool:
$>pkcs11-tool -Ol
La salida debería ser un montón de líneas rojas quejándose de:
Para luego pedirnos nuestra contraseña del DNIe y mostrar algunos datos.[opensc-pkcs11] card_helper.c:83:card_helper_read_file: returning with: Security status not satisfied
[opensc-pkcs11] card_sync.c:994:card_sync_card_to_virtual_fs_data_file_callback: returning with: Security status not satisfied - Finalmente, reiniciar Firefox y acceder a la página de comprobación de que las cosas funcionan con el DNIe.
- Estoy dando por hecho que el ordenador detecta el lector bien ("opensc -l") y que se trabaja con el daemon "pcscd" lanzado (*).
- (Error code: ssl_error_bad_cert_alert):
- (Error code: sec_error_pkcs11_general_error)
Cosas que no me funcionan:
Tras mucho leer (entre otros sitios en Kriptopolis), me he dado cuenta de cosas que no funcionan para OpenSuse 11.3, aunque se dicen por ahí:
- No funciona compilar el código liberado, al menos no a la primera ni a la segunda, así que no merece la pena perder el tiempo. Además hay que meter ciertas claves en no se dónde (no he seguido investigando).
- No funciona modificar la librería opensc-dnie.so.1.0.3 con un editor hexadecimal y cambiar el string que pone 0.11.9 a la versión que queramos, al menos yo volvía al (Error code: sec_error_pkcs11_general_error). Hay bastantes diferencias entre la 0.11.9 y la 0.11.13 como para que la cosa funcione así de simple.
- No funciona crear una librería wrapper para que funcione con opensc 0.11.12
o 0.11.13 como indican aquí, aunque es muy
entretenido ver cómo hackearlo. Esto se supone que sirve para solucionar (y lo
hace, pero no el pkcs11_general_error) el mensaje de:
[pkcs15-tool] ctx.c:367:load_dynamic_driver: dynamic library '/usr/lib/libopensc-dnie.so.1.0.3': invalid module version
(*) Como anécdota, me compré un lector multitarjetas marca Tecnimax, que asegura en el envoltorio compatibilidad con Linux, que en realidad lleva un chip de Realtek, y que viene con un CD que contiene un fichero PDF "using_SCR80-5169_in_linux" ¡en chino! Poca cosa pude sacar, excepto que se necesita "pcsc-lite" y "pcsc-ccid" para que funcione el lector de . Por su parte se puede eliminar openCT perfectamente.
Comentarios
Hola,
Muchas gracias por este manual, por fin una información clara y estructurada.
Tengo un problema, que no consigo solucionar. Tal vez, puedas ayudarme.
Tengo un lector C3PO LTC31. Al llegar al paso 6, me devuelve el siguiente error:
[opensc-tool] ctx.c:349:load_dynamic_driver: Module dnie: cannot load /usr/lib/libopensc-dnie.so library: file not found
[opensc-tool] ctx.c:465:load_card_drivers: Unable to load 'dnie'.
[opensc-tool] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found
Lo curioso es que el archivo libopensc-dnie.so esta en esa localización.
Probando con lsusb también detecta el lector, e incluso cuando cargo el daemon pcscd, el lector marca luz verde, es decir, todo correcto.
En windows si que funciona, no es problema del DNIe ni del lector.
Saludos y muchas gracias
Hola, no sé que te puede pasar exactamente, pero si tuviera que apostar diría que una versión de OpenSC distinta de la 0.11.9 o algún elemento de esta librería que se haya quedado por ahí al desinstalar las versiones más recientes que hay (o que se te ha colado).
Mira a ver si sale algo más de información con:
opensc-tool -v -D
Investigando un poco me encontré con el proyecto OpenDNIe (http://opendnie.cenatic.es), que me ha funcionado de maravilla pero en un ordenador de 32 bits. Según he leído no funciona en ordenadores de 64 bits. De hecho dice algo similar, no encuentra el lector de tarjetas.
Tu ordenador es de 64 bits?
opendnie es un proyecto que ha sido presentado más tarde de cuando escribí el post. El post es para hacerfuncionar el dnie con los binarios que distribuye el CNP.
opendnie debería poder funcionar bien con la última versión de OpenSC, aunque yo todavía no he tenido tiempo de probarlo.
OpenDNIe crea su propio OpenSC. No es necesario tener otro instalado.
El tema es la arquitectura, me puedes indicar si tu usas 64 bits?
Si usas 32 bits, esta claro donde esta el problema el DNIe no funciona den 64 bits.
This post was mentioned on Twitter by celebrity fashion. email me if you require further details. Thanks.