El chip del DNIe le permite funcionar con cualquier lector de tarjetas smartcard. Por tanto, podremos utilizar cualquier lector de smartcard compatible con Linux. En principio, debería serlo cualquier lector que use el controlador estándar CCID. Además, se deben instalar los controladores de la tarjeta, en este caso los del DNIe, que sólo se distribuyen en formato binario.
1- Instalación del lector smartcard.
En mi caso, he utilizado un lector Cherry ST1210, aunque puede servir cualquier otro. En el caso del Cherry, hace falta instalar el paquete CCID y su dependencia pcsc-lite. En este caso las versiones instaladas son las más actuales estables en portage: ccid-1.3.10 y pcsc-lite-1.5.3. pcsc-lite lo instalaremos haciendo uso de la USE=hal, que ya activa por defecto:
Code: Select all
# emerge -pv pcsc-lite ccid
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] sys-apps/pcsc-lite-1.5.3 USE="hal -static -usb" 0 kB
[ebuild R ] app-crypt/ccid-1.3.10 USE="-nousb -twinserial" 0 kB
Total: 2 packages (2 reinstalls), Size of downloads: 0 kB# /etc/init.d/pcscd start
# rc-update add pcscd default
Con esto, el sistema ya debería reconocer el lector. Una forma rápida de saber si ha sido reconocido es, desde las X, usar el programa usbview: el nombre de los dispositivos que no tienen el correspondiente controlador cargado aparece en rojo. Si todo está correcto aparecerá en negro.
Controlador no cargado: http://yfrog.com/0xlectorkoj --- Controlador cargado: http://yfrog.com/9flectorokj
2- Instalación del controlador para la tarjeta del DNIe
Nuevo ebuild versión 1.4.6-r1 en http://forums.gentoo.org/viewtopic-p-63 ... ml#6329306 que funciona con la versión actual de opensc.
Lo primero que hemos de hacer es poner en el overlay del portage (que crearemos si no lo hemos hecho ya) el ebuild, que pondremos en /usr/local/portage/dev-libs/opensc-dnie/opensc-dnie-1.4.7.ebuild:
Code: Select all
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="Controlador opensc para el DNI electrónico"
HOMEPAGE="www.dnie.es"
SITE="http://www.dnie.es/descargas/PKCS11_para_Sistemas_Unix"
SRC_URI="x86? ( ${SITE}/1.4.7.Ubuntu_Karmic_32/Ubuntu_Karmic_${PN}_1.4.7-2_i386.tar )
amd64? ( ${SITE}/1.4.7.Ubuntu_Karmic_64/Ubuntu_Karmic_${PN}_1.4.7-2_amd64.tar ) "
LICENSE="DGP"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""
DEPEND="=dev-libs/opensc-0.11.8
sys-devel/binutils
app-arch/tar"
RDEPEND="dev-lang/perl
=dev-libs/opensc-0.11.8"
src_install() {
if use amd64; then
ARQ="_amd64"
else
ARQ="_i386"
fi
ar -x ${PN}_1.4.7-1${ARQ}.deb || die "Extract failed"
cd ${D}
tar xvzf ${WORKDIR}/data.tar.gz || die "Install failed"
}
pkg_postinst() {
grep dnie /etc/opensc.conf >${T}/odc
if ( ! test -s ${T}/odc ); then
patch -b /etc/opensc.conf ${FILESDIR}/opensc-dnie.conf.patch
fi
}
pkg_postrm() {
if ( test -e /etc/opensc.conf.orig ); then
rm /etc/opensc.conf
mv /etc/opensc.conf.orig /etc/opensc.conf
fi
}Code: Select all
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="Controlador opensc para el DNI electrónico"
HOMEPAGE="www.dnie.es"
SRC_URI="x86? ( http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/${PN}_1.4.6-2_i386.deb.tar )
amd64? ( http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/${PN}_1.4.6-2_amd64.deb.tar ) "
LICENSE="DGP"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""
DEPEND="=dev-libs/opensc-0.11.7
sys-devel/binutils
app-arch/tar"
RDEPEND="dev-lang/perl
=dev-libs/opensc-0.11.7"
src_install() {
if use amd64; then
ARQ="_amd64"
else
ARQ="_i386"
fi
ar -x ${PN}_1.4.6-2${ARQ}.deb || die "Extract failed"
cd ${D}
tar xvzf ${WORKDIR}/data.tar.gz || die "Install failed"
}
pkg_postinst() {
grep dnie /etc/opensc.conf >${T}/odc
if ( ! test -s ${T}/odc ); then
patch -b /etc/opensc.conf ${FILESDIR}/opensc-dnie.conf.patch
fi
}
pkg_postrm() {
if ( test -e /etc/opensc.conf.orig ); then
rm /etc/opensc.conf
mv /etc/opensc.conf.orig /etc/opensc.conf
fi
}Code: Select all
49a50
> reader_drivers=pcsc;
121a123,128
> card_drivers = dnie;
>
> card_driver dnie {
> #The location of the driver library
> module = /usr/lib/libopensc-dnie.so;
> }[opensc-pkcs11] ctx.c:362:load_dynamic_driver: dynamic library '/usr/lib/libopensc-dnie.so': invalid module version
[opensc-pkcs11] ctx.c:462:load_card_drivers: Unable to load 'dnie'.
Nota: La versión 1.4.6-r1 utiliza un wrapper que lo hace compatible con cualquier versión de opensc-0.11.x
Podemos bajar la versión correcta de opensc de los siguientes enlaces:
0.11.7: http://sources.gentoo.org/viewcvs.py/*c ... 1.7.ebuild
0.11.8: http://sources.gentoo.org/viewcvs.py/*c ... 1.8.ebuild
Además debemos asegurarnos de que opensc se instala con la USE pcsc-lite, ya que de lo contrario no podrá comunicarse con nuestro lector smartcard.
Una vez instalado, en el menú Oficina de nuestro entorno X (xfce, kde, o el que sea) encontraremos un enlace para registrar el módulo PKCS#11 del DNIe en Firefox. Tras ejecutarlo, se abrirá Firefox y nos pedirá permiso para instalar el módulo de seguridad. Tras hacerlo, cerramos Firefox y se volverá abrir. En teoría, al hacerlo debería instalar el certificado raíz de la Dirección General de Policía, que se usará para validar los DNIe. Digo en teoría, porque en Firefox 3.0.11 no funciona, y deberemos instalarlo manualmente.
Para instalar el certificado raíz de la DGP manualmente, abrimos en Firefox el menú Editar -> Preferencias. Pulsamos en el icono Avanzado y en la pestaña Cifrado pulsamos el botón Ver certificados. En la ventana que sale nos vamos a la pestaña Autoridades, pulsamos el botón Importar e importamos el certificado raíz de la DGP que se encuentra en /usr/share/opensc-dnie/ac_raiz_dnie.crt. En la ventana que aparece marcaremos las 3 casillas y aceptamos.
En Firefox 3.5 es necesario añadir manualmente el dispositivo, ya que no se instala automáticamente. Para ello seguiremos los siguientes pasos:
- 1. En el menú Editar elegir la opción Preferencias
2. Seleccionar el icono Avanzado
3. En la pestaña Cifrado pulsar el botón Dispositivos de seguridad. Se mostrará la ventana del Administrador de dispositivos
4. Pulsar el botón Cargar
5. Introducir los datos del módulo:- * En Nombre del módulo escribir un nombre para el módulo (por ejemplo, DNIe)
* En Archivo del módulo escribir: /usr/lib/opensc-pkcs11.so
7. En el administrador de dispositivos, pulsar de nuevo Aceptar.
8. Ya se puede cerrar la ventana de Preferencias. - * En Nombre del módulo escribir un nombre para el módulo (por ejemplo, DNIe)
La primera cosa a comprobar sería que el lector smartcard está correctamente reconocido por el sistema. Eso ya lo hemos hecho en el primer paso, al comprobar mediante usbview si el dispositivo salía en negro o rojo.
En segundo lugar, en el administrador de dispositivos de Firefox (la ventana a la que accedemos mediante el botón dispositivos de seguridad) en la lista de módulos de seguridad y dispositivos saldrá uno llamado DNIe que contendrá muchas entradas Virtual slot. Si tenemos conectado el lector smartcard, las 4 primeras aparecerán con el nombre del lector (en el caso del Cherry son 4, no sé si con otros lectores el número puede variar). Si con el lector conectado ninguno de los Virtual slot aparece renombrado con el nombre del lector, una causa posible puede ser que opensc se haya compilado sin el use pcsc-lite. Al introducir un DNIe en el lector, la primera de dichas entradas muestra que está introducido el DNIe.
Sin DNIe insertado: http://yfrog.com/elsindniej --- Con DNIe insertado: http://yfrog.com/5wcondniej
Por último hacemos una visita a la página http://www.dnie.es y al final de la página a la que accedemos pulsando en CÓMO UTILIZAR EL DNIE -> Verificar que funciona encontraremos un enlace para verificar su funcionamiento.
En la misma página, accediendo al enlace descargas -> Sistemas GNU/Linux y Sistemas MacOS podemos encontrar un enlace con el programa para cambiar el pin.
Notas:
1- No estoy seguro de si el ebuild está hecho de la mejor forma posible o no. Casi seguro que será mejorable, pero al menos lo he probado y consigue instalar correctamente el programa del DNIe tanto en x86 como en amd64. Cualquier sugerencia o mejora al ebuild será bienvenida.
2- En el paquete .deb hay un script que permite modificar el archivo /etc/opensc.conf al instalar opensc-dnie y dejarlo como estaba tras la desinstalación. Pero tras echarle un vistazo veo que usa cosas de Debian y por tanto no estoy seguro si funcionaría en Gentoo, por lo que he hecho un simple apaño en la funcion pkg_postinst del ebuild que simplemente modifica una sola vez dicho archivo, y no vuelve a hacerlo si se reinstala opensc-dnie si ya hace referencia al mismo.
---Actualizaciones---
21/07/2009 -> Cambio en el ebuild para recuperar el archivo /etc/opensc.conf original si se desinstala opensc-dnie
02/08/2009 -> Eliminada versión 0.11.7 de opensc en el portage, por un bug de seguridad. Puede bajarse el ebuild de http://sources.gentoo.org/viewcvs.py/*c ... 1.7.ebuild y ponerlo en el overlay del portage. Espero que salga una nueva versión del controlador para el DNIe que solucione el problema.
20/02/2010: Añadido ebuild para la nueva versión 1.4.7 (usando paquetes de Ubuntu Karmic Koala) que depende de opensc-0.11.8 en vez de opensc-0.11.7. Algo es algo (esta version ha resuelto un importante bug de seguridad) aunque sigue siendo muy antigua y ya no está en portage, aunque podemos descargar el ebuild desde este enlace: http://sources.gentoo.org/viewcvs.py/*c ... 1.8.ebuild
24/06/2010: Nuevo ebuild para la versión 1.4.6, que lo instala con un wrapper que le permite funcionar sobre cualquier versión de opensc-0.11.*: http://forums.gentoo.org/viewtopic-p-63 ... ml#6329306



