Vengo a dejar un pequeño aporte, que ayude a quienes quieran utilizar su DNI electrónico y su lector en Linux con Chromium, Chrome o Edge (en Debian y derivadas). Probado en Ubuntu, derivadas y Fedora utilizando el siguiente Lector de DNIE, aunque debería funcionar en todos, es el mejor compatibilidad-precio (NO LINK REFERIDO).
- ¿Navegadores Chromium y no Firefox? Sí, más ahora que Canonical ha decidido que el Firefox predeterminado en Ubuntu (y sabores oficiales) sea el de Snap, que presenta problemas a la hora de instalar el libpkcs11.
- ¿No se puede quitar Firefox de Snap e instalar el del PPA oficial de "Mozilla Team"? Si, con
sudo snap remove firefox
y añadiendo el PPA de Mozilla Teamsudo add-apt-repository ppa:mozillateam/ppa
, pero requiere cambiar la prioridad para que, al hacersudo apt install firefox
osudo apt update
no te cuele de nuevo el paquete Snap.
Todo esto, con el navegador basado en Chromium ya instalado, y cerciorándonos de que no quede abierto el proceso de ningún navegador.
Vamos con los comandos:
sudo apt update
sudo apt install pcscd pcsc-tools
sudo apt install libnss3-tools
.
o en el caso de Fedora:
.
sudo yum update
sudo yum install pcsc-tools
sudo yum install libnss3-tools
Tras esto, podemos comprobar si el lector está funcionando utilizando:
pcsc_scan
Si lo detecta, aparecerá en el terminal el lector (Alcor, MSI, etc), y metiendo el DNI, veréis como lo detecta también (ya que marca DNI insertado y no).
¿Qué hacer si no lo detecta? Puede aparecer un mensaje en rojo, y es porque el servicio no está arrancado (no es lo habitual pero puede pasar), para lo cual pondríamos 2, uno para arrancarlo manualmente y otro para que arranque con el SO:
sudo service pcscd start
sudo systemctl enable pcscd
Ya podemos seguir, para eso hay que generar la db a la que añadir el libpkcs11:
cd "${HOME}"
mkdir -p ~/.pki/nssdb
certutil -d ~/.pki/nssdb -N –empty-password
Nos va a preguntar si queremos contraseña, y nos va a pedir ponerla. ¿Para qué sirve? Para que otros usuarios no puedan añadir otros certificados a la db, no es el PIN del DNI. Yo, personalmente, no la tengo. Si no se la ponéis, podéis darle 3 veces seguidas a enter y seguir con el siguiente comando, que es darle permisos a la db:
chmod 700 ~/.pki/nssdb
El siguiente comando es:
certutil -d "sql:${HOME}/.pki/nssdb" -L
Ahora hay que bajarse el libpkcs11-dnie_1.6.8_amd64.deb
de la web oficial (La primera opción) e instalarlo con dpkg, gdebi o con la propia tienda, si la intención es instalarlo en Fedora, seleccionais el paquete para esa distribución, el rpm, y lo instaláis con discover.
Una vez instalado, podemos proceder a añadir el libpkcs11 a la db mediante:
modutil -add "DNIe" -dbdir "sql:${HOME}/.pki/nssdb" -libfile /usr/lib/libpkcs11-dnie.so
.
o para Fedora:
.
modutil -add "DNIe" -dbdir "sql:${HOME}/.pki/nssdb" -libfile /usr/lib64/libpkcs11-dnie.so
Y comprobar con el comando:
modutil -list -dbdir ~/.pki/nssdb/
Por último, podemos comprobar el correcto funcionamiento en la web de la FNMT. Si todo ha ido bien, al solicitar la verificación y con el DNI insertado en el lector, el navegador basado en Chromium debería solicitarnos el PIN y preguntarnos si queremos utilizar ese certificado, y mostrarnos que está todo OK.
P.d: En un primer momento, puse que se añade el certificado, pero lo que se añade a la db es el módulo libpkcs11. Sin DNIe insertado, no hace absolutamente nada, con DNIe insertado pero sin el libpkcs11, tampoco, gracias a @License2Harm y perdonad.
Actualizado a 26/04/2023.