Hoy me ha llegado el aviso de que me iba a caducar el certificado de la FNMT, y en el proceso de renovación me obligaban a autenticarme con el DNIe, por lo que he tenido que repasar todo este tema.
La última vez que lo usé, tuve que compilar a mano los módulos de OpenDNIe y hacer unos cuantos malabares. Por fortuna, parece que la integración del proyecto con opensc ha dado sus frutos y no he tenido que usar ningún tipo de magia negra esta vez.
Estos son los pasos que he seguido para hacerlo funcionar en Fedora 23.
Primero, instalo los paquetes necesarios:
dnf install pcsc-lite pcsc-lite-ccid pcsc-tools coolkey opensc
Habilito el demonio de las smart cards:
systemctl enable pcscd.service systemctl start pcscd.service
Con el comando pcsc_scan se pueden monitorizar los eventos del lector de tarjetas, y ver si al pinchar nuestro DNIe, lo reconoce correctamente. Por ejemplo, en mi caso:
# pcsc_scan
PC/SC device scanner
V 1.4.23 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.13
Using reader plug'n play mechanism
Scanning present readers...
0: MSI StarReader SMART [Smart Card Reader Interface] (20070818000000000) 00 00
Wed Dec 16 20:55:41 2015
Reader 0: MSI StarReader SMART [Smart Card Reader Interface] (20070818000000000) 00 00
Card state: Card removed,
Wed Dec 16 20:55:47 2015
Reader 0: MSI StarReader SMART [Smart Card Reader Interface] (20070818000000000) 00 00
Card state: Card inserted,
ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
TA(1) = 38 --> Fi=744, Di=12, 62 cycles/ETU
64516 bits/s at 4 MHz, fMax for Fi = 8 MHz => 129032 bits/s
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 6, len: A (pre-issuing data)
Data: 44 4E 49 65 20 02 4C 34 01 13
Mandatory status indicator (3 last bytes)
LCS (life card cycle): 03 (Initialisation state)
SW: 9000 (Normal processing.)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
3B 7F 38 00 00 00 6A 44 4E 49 65 [1,2]0 02 4C 34 01 13 03 90 00
DNI electronico (Spanish electronic ID card)
http://www.dnielectronico.es
Perfecto, lo reconoce a la primera. Ahora configuramos Firefox. Primero configuramos el soporte PKCS11 para acceder a nuestro lector de tarjetas:
En Preferencias -> Certificados -> Dispositivos de seguridad
Le damos a Cargar, e introducimos:
Nombre del módulo: DNIe Archivo del módulo: /usr/lib64/opensc-pkcs11.so
Ahora instalamos las autoridades de certificación necesarias. Tendremos que descargarlas, descomprimirlas e importarlas en Firefox en el apartado de Autoridades.
De la FNMT, las 2 CA raíz, y al menos la AC FNMT Usuarios:
https://www.sede.fnmt.gob.es/descargas/certificados-raiz-de-la-fnmt
Del DNI electrónico, las 3 CA subordinadas (elegir la versión sha256):
http://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_078
Por último, instalaros el complemento signTextJS, ya que en muchos sitios, entre otros el de la FNMT, usan esta API deprecada.
Y… ya está. Yo con estos pasos he podido sacarme el certificado de la FNMT. Aseguraos de que elegís correctamente el certificado que usáis del DNIe, ya que hay 2, uno para autenticación y otro para firmar.
Espero que os sirva.