Instalación de OpenDNIe en Fedora 15

Recientemente ha aparecido el proyecto OpenDNIe para poder usar el DNI electrónico con herramientas libres y mejorar la lamentable situación de los drivers oficiales. Yo he usado esta versión para varios trámites y no he tenido ningún problema, os cuento como instalarlo en Fedora 15 x86_64:

Descargo los paquetes fuente para RedHat en la página de descarga y compruebo la suma md5.

$ md5sum -c opensc-opendnie-0.12.2-1.fc14.src.rpm.md5 < opensc-opendnie-0.12.2-1.fc14.src.rpm
-: La suma coincide

Instalo las dependencias:

# yum groupinstall "Development tools"
# yum install rpmdevtools pcsc-lite pcsc-lite-devel pcsc-lite-ccid pcsc-tools readline readline-devel openssl openssl-devel libtool libtool-ltdl-devel docbook-style-xsl

Con mi lector de tarjetas he tenido que desinstalar las librerías OpenCT para que lo reconzca correctamente:

# yum remove openct

Compilo el paquete

$ rpmbuild --rebuild opensc-opendnie-0.12.2-1.fc14.src.rpm

Si todo va bien, nos encontraremos el paquete en ~/rpmbuild/RPMS/<arch>/ Por lo que procedemos a instalarlo como root

# yum localinstall ~/rpmbuild/RPMS/x86_64/opensc-0.12.2-1.fc15.x86_64.rpm

Hay que tener en cuenta que incluye todo el paquete opensc con las librerías OpenDNIe integradas, por lo que sustituye al opensc que viene con la distribución. Para que una actualización no nos machaque nuestro paquete, podemos añadir en /etc/yum.conf la siguiente línea en el apartado [main]

exclude=opensc

Habilitamos el servicio de smart cards, en Fedora 16 es un servicio de systemd:

# systemctl enable pcscd.service
# systemctl start pcscd.service

Podemos comprobar si nos reconoce el lector con el comando pcsc_scan. En caso de que nos diga “Waiting for the first reader…”, entonces no nos ha reconocido el lector.

# pcsc_scan
PC/SC device scanner
V 1.4.17 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.7.4
Scanning present readers...
0: MSI StarReader SMART [Smart Card Reader Interface] (20070818000000000) 00 00

Tue Jun  5 16:06:02 2012
Reader 0: MSI StarReader SMART [Smart Card Reader Interface] (20070818000000000) 00 00
Card state: Card removed,

En Firefox, hay que añadir la autoridad certificadora de la FNMT y la autoridad de validación del DNIe, una vez descargados los certificados, vamos a Preferencias, Avanzado, Cifrado, Ver certificados, Autoridades, Importar y marcamos las 3 casillas para que confíe en estas CA.

Por último añadimos la librería que hemos compilado para poder hacer uso del DNIe en las páginas web. En Preferencias, Avanzado, Cifrado, Dispositivos de seguridad, añadimos la siguiente entrada:

OpenDNIe PKCS#11
/usr/lib64/opensc-pkcs11.so

Tenéis más información sobre la configuración en Linux en la wiki de Cenatic.

24 thoughts on “Instalación de OpenDNIe en Fedora 15

  1. Hola, me ha funcionado todo exxepto lo último, cuando intento registrarlo en Firefox y al cargar al módulo me dice que no es posible cargarlo.
    La diferencia es que tengo fedora 16 y el mídulo se ha creado en /usr/lib/opensc-pkcs11.so aunque tengo 64bit.
    ¿Cual puede ser el problema?
    Gracias.

    Like

    1. Que raro, yo acabo de repetir todo el proceso con Fedora 16 y me ha funcionado bien. Al compilar el RPM, ¿te lo ha generado con la arquitectura correcta x86_64? Puedes comprobar si es una librería de 64 bits con:
      $ file /usr/lib64/opensc-pkcs11.so
      /usr/lib64/opensc-pkcs11.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

      Supongo que no habrás tocado nada de las macros de RPM, mira el valor de las macros _lib y _libdir con el comando:
      $ rpm –showrc | grep _lib

      Puedes mirar también el contenido del RPM generado con el comando:
      $ rpmls ~/rpmbuild/RPMS/x86_64/opensc-0.12.2-1.fc16.x86_64.rpm

      Otra cosa que se me ocurre es lanzar Firefox desde línea de comandos para ver si muestra algún error cuando intentas cargar el módulo.

      Ya me dirás que tal.
      Un saludo.

      Like

  2. Hola, gracias por contestar tan rápido.
    Te pego el contenido de lo que me sale del RPM generado:

    -rw-r–r– /etc/opensc.conf
    -rwxr-xr-x /usr/bin/cardos-tool
    -rwxr-xr-x /usr/bin/cryptoflex-tool
    -rwxr-xr-x /usr/bin/dnie-tool
    -rwxr-xr-x /usr/bin/eidenv
    -rwxr-xr-x /usr/bin/netkey-tool
    -rwxr-xr-x /usr/bin/opensc-explorer
    -rwxr-xr-x /usr/bin/opensc-tool
    -rwxr-xr-x /usr/bin/piv-tool
    -rwxr-xr-x /usr/bin/pkcs11-tool
    -rwxr-xr-x /usr/bin/pkcs15-crypt
    -rwxr-xr-x /usr/bin/pkcs15-init
    -rwxr-xr-x /usr/bin/pkcs15-tool
    -rwxr-xr-x /usr/bin/westcos-tool
    lrwxrwxrwx /usr/lib64/libopensc.so.3
    -rwxr-xr-x /usr/lib64/libopensc.so.3.0.0
    -rwxr-xr-x /usr/lib64/onepin-opensc-pkcs11.so
    -rwxr-xr-x /usr/lib64/opensc-pkcs11.so
    drwxr-xr-x /usr/lib64/pkcs11
    -rwxr-xr-x /usr/lib64/pkcs11-spy.so
    lrwxrwxrwx /usr/lib64/pkcs11/onepin-opensc-pkcs11.so
    lrwxrwxrwx /usr/lib64/pkcs11/opensc-pkcs11.so
    lrwxrwxrwx /usr/lib64/pkcs11/pkcs11-spy.so
    drwxr-xr-x /usr/share/doc/opensc-0.12.2
    -rw-r–r– /usr/share/doc/opensc-0.12.2/COPYING
    -rw-r–r– /usr/share/doc/opensc-0.12.2/NEWS
    -rw-r–r– /usr/share/doc/opensc-0.12.2/README
    -rw-r–r– /usr/share/doc/opensc-0.12.2/README.pkcs15init
    -rw-r–r– /usr/share/doc/opensc-0.12.2/README.scconf
    -rw-r–r– /usr/share/man/man1/cardos-tool.1.gz
    -rw-r–r– /usr/share/man/man1/cryptoflex-tool.1.gz
    -rw-r–r– /usr/share/man/man1/dnie-tool.1.gz
    -rw-r–r– /usr/share/man/man1/eidenv.1.gz
    -rw-r–r– /usr/share/man/man1/netkey-tool.1.gz
    -rw-r–r– /usr/share/man/man1/opensc-explorer.1.gz
    -rw-r–r– /usr/share/man/man1/opensc-tool.1.gz
    -rw-r–r– /usr/share/man/man1/piv-tool.1.gz
    -rw-r–r– /usr/share/man/man1/pkcs11-tool.1.gz
    -rw-r–r– /usr/share/man/man1/pkcs15-crypt.1.gz
    -rw-r–r– /usr/share/man/man1/pkcs15-init.1.gz
    -rw-r–r– /usr/share/man/man1/pkcs15-tool.1.gz
    -rw-r–r– /usr/share/man/man1/westcos-tool.1.gz
    -rw-r–r– /usr/share/man/man5/pkcs15-profile.5.gz
    drwxr-xr-x /usr/share/opensc
    -rw-r–r– /usr/share/opensc/asepcos.profile
    -rw-r–r– /usr/share/opensc/authentic.profile
    -rw-r–r– /usr/share/opensc/cardos.profile
    -rw-r–r– /usr/share/opensc/cyberflex.profile
    -rw-r–r– /usr/share/opensc/entersafe.profile
    -rw-r–r– /usr/share/opensc/flex.profile
    -rw-r–r– /usr/share/opensc/gpk.profile
    -rw-r–r– /usr/share/opensc/ias_adele_admin1.profile
    -rw-r–r– /usr/share/opensc/ias_adele_admin2.profile
    -rw-r–r– /usr/share/opensc/ias_adele_common.profile
    -rw-r–r– /usr/share/opensc/iasecc.profile
    -rw-r–r– /usr/share/opensc/iasecc_admin_eid.profile
    -rw-r–r– /usr/share/opensc/iasecc_generic_oberthur.profile
    -rw-r–r– /usr/share/opensc/iasecc_generic_pki.profile
    -rw-r–r– /usr/share/opensc/incrypto34.profile
    -rw-r–r– /usr/share/opensc/jcop.profile
    -rw-r–r– /usr/share/opensc/miocos.profile
    -rw-r–r– /usr/share/opensc/muscle.profile
    -rw-r–r– /usr/share/opensc/myeid.profile
    -rw-r–r– /usr/share/opensc/oberthur.profile
    -rw-r–r– /usr/share/opensc/pkcs15.profile
    -rw-r–r– /usr/share/opensc/rutoken.profile
    -rw-r–r– /usr/share/opensc/rutoken_ecp.profile
    -rw-r–r– /usr/share/opensc/setcos.profile
    -rw-r–r– /usr/share/opensc/starcos.profile
    -rw-r–r– /usr/share/opensc/westcos.profile

    Soy nuevo en linux y no entiendo mucho, pero aparentemente, lo veo bien. Lo que pasa es que los paquetes de /usr/lib64 los ha generado en /usr/lib y además he comprobado como me has dicho la compilación del RPM y efectivamente NO ES DE 64 bit:

    $ file /usr/lib64/opensc-pkcs11.so
    /usr/lib/opensc-pkcs11.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

    ¿Por qué ha hecho esto? ¿Cómo lo desinstalo?

    Like

  3. SOLUCIONADO…………..aunque no sé cómo

    He desinstalado el opensc:
    $ sudo yum erase opensc-pkcs11.so

    y luego he repetido la instalación:
    $ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/opensc-0.12.2-1.fc16.x86_64.rpm

    y ahora me ha funcionado!!!!
    Gracias por todo crack!!

    P.D. Ahora tengo que renovar el certificado porque me pone que está cadudado!!!

    Like

  4. Hola, yo tengo Fedora 16 de 32 bits. Podríais indicarme en que debo variar el procedimiento de instalación descrito por vosotros para 64 bits?
    Gracias por adelantado!!

    Like

    1. Lo único que cambiaría sería que tras la compilación del RPM, lo encontrarás en el directorio de tu arquitectura en ~/rpmbuild/RPMS
      Además la librería que tienes que añadir a Firefox estará en la ruta /usr/lib/opensc-pkcs11.so

      Por todo lo demás, idéntico.

      Like

  5. Juan. ante todo muchas gracias por tu rapidísima respuesta! He seguido todos los pasos de la instalación y no obtuve error alguno, salvo cuando intento habilitar y comenzar el servicio “pcscd”. Al hacer: #systemctl enable pcscd.service
    me contesta con: “Failed to issue method call: No such file or directory”

    Like

    1. Parece que no encuentra el archivo /lib/systemd/system/pcscd.service. Asegúrate que tienes instalado el paquete pcsc-lite y que corres el comando como root. Con eso debería bastar.

      Like

  6. Ah, he observado que en Fedora 16 no tengo instalado los siguientes paquetes: openct, pcsc-lite-openct, pcsc-lite, pcsc-lite-ccid, pcsc-tools, coolkey

    Inicialmente, antes de proceder a la instalación tal y como tu describes aquí, los tenía instalados de una instalación fallida de hacía unos días atrás, partiendo ya de paquetes para fedora13. Supongo que deberé instalarlos, o al menos alguno de ellos, no?

    Like

  7. He instalado el pcsc-lite (y el pcsc-lite-ccid) y ya he podido habilitar y lanzar el servicio pcsc. He añadido a Firefox la librería /usr/lib/opensc-pkcs11.so. Ahora en el administrador de dispositivos de firefox ya me aparece el nuevo módulo (DNI electrónico PIN1), pero cuando pulso “Iniciar sesión” me dice: “Por favor, identifíquese con el token. El método de identificación dpende del tipo de su token. Token: DNi electrónico (PIN1)”. Y luego me da el error: “Falló el inicio de sesión”. Previamente, claro tengo insertado el DNI en mi lector del teclado. Y es que no me da la oportunidad de introducir el PIN, que es lo que debí pedirme, no?
    Tendré que instalar alguno de los otros paquetes que comenté arriba??

    Like

      1. Sí, ya he probado en la página que dices pero ocurre lo mismo: primero me sale un mensaje con lo de: “Por favor, identifíquese con el token. El método de identificación dpende del tipo de su token. Token: DNi electrónico (PIN1)” y luego como no tengo forma de meter el PIN me da error de autenticación.
        Ahora no estoy en el equipo con Fedora con el que estoy probando lo del dnie pero me pregunto sino hará falta el paquete “pinentry-gtk” o algo que me permita abrir el dialogo para introducir el pin de mi dnie? Tu lo tienes instalado?

        Like

      2. El diálogo que pide la contraseña me parece que es de Firefox, no del programa pinentry. Estoy revisando los paquetes que me dices y solo tengo instalados estos:

        pinentry
        pinentry-gtk
        pcsc-lite
        pcsc-lite-ccid
        pcsc-lite-devel
        pcsc-lite-libs

        Estoy aprovechando para actualizar la entrada con alguna cosilla que se me había olvidado, como la importación de las entidades certificadoras, aunque no creo que sea tu problema. Ya me contarás si descubres el problema.

        Un saludo.

        Like

  8. Receta válida para Fedora 12 también, incluso en arquitectura PowerPC. Qué ganas tenía de que rulara esto y olvidarme de la VM con Windows…

    Like

  9. Hola!

    He instalado perfectamente el dni-e en Fedora 16.

    Solo hay una cosa que no funciona. En lugar de aparecerme la pantalla para ingresar el pass del dni-e me aparece una pantalla que me dice… “por favor identifiquese con el token, el método de identificación depende del token del dni,…” pero en ningún lugar puedo ingresar al susodicho pin.

    Como se puede agreglar esto.
    Gracias.

    Like

    1. El DNIe tiene dos claves, la de autenticación y la de firma, suele preguntar cual elegir y a continuación hay que meter la clave. No tengo muy claro qué es lo que dices. ¿Puedes mandar una captura de pantalla?

      Like

  10. Hola.
    He seguido tus pasos para instalarlo en Fedora 17 64 bits y obtengo este fallo:

    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_get_dnie_driver’
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_pkcs15emu_dnie_init_ex’
    collect2: error: ld returned 1 exit status
    make[3]: *** [opensc-tool] Error 1
    make[3]: *** Waiting for unfinished jobs….
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_get_dnie_driver’
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_pkcs15emu_dnie_init_ex’
    collect2: error: ld returned 1 exit status
    make[3]: *** [opensc-explorer] Error 1
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_get_dnie_driver’
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_pkcs15emu_dnie_init_ex’
    collect2: error: ld returned 1 exit status
    make[3]: *** [pkcs15-tool] Error 1
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_get_dnie_driver’
    ../../src/libopensc/.libs/libopensc.so: undefined reference to `sc_pkcs15emu_dnie_init_ex’
    collect2: error: ld returned 1 exit status
    make[3]: *** [pkcs15-crypt] Error 1
    make[3]: Leaving directory `/home/angel/rpmbuild/BUILD/opensc-0.12.2/src/tools’
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/angel/rpmbuild/BUILD/opensc-0.12.2/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/angel/rpmbuild/BUILD/opensc-0.12.2′
    make: *** [all] Error 2
    error: Estado de salida erróneo de /var/tmp/rpm-tmp.tGnpBB (%build)

    Errores de construcción RPM:
    usuario jantonio no existe – utilizando root
    grupo jantonio no existe – utilizando root
    Estado de salida erróneo de /var/tmp/rpm-tmp.tGnpBB (%build)

    Te estaría muy agradecido si me echaras una mano.

    Muchas gracias y un saludo.

    Like

Leave a reply to Juan Orti Cancel reply