0. Introducción
Cuando se instala una nueva vetrsión de Java o se actualiza Ubuntu, se pueden perder los certificados instalados en Mozilla, y por tanto se pierden los certificados de Autofirma.1. Verificar que Mozilla tenga los certificados cargados:
En Preferencias->Seguridad y privacidad ->Ver certificados me ha aparecido una panntalla que no ha aparecido ningún certificado ni parecía el botón de importar.
La solución es tan tonta como ampliar la pantalla arrantrando como indica la flecha y ahora ya se pueden importar certificados p12 pues ya aparece el botón de importar
2. Restaurar instalación de Autofirma
Si no aparece el certificado en Autofirma, hay que restaurar la instalación. Para ello entramos en Autofirma ->Herramientas->Reestaurar instalación
Y nos pide salir del navegador si está abierto.
1 2 3 | #!/bin/bash # java -jar /usr/lib/AutoFirma/AutoFirma.jar $* /usr/lib/jvm/java-8-oracle/jre/bin/java -jar /usr/lib/AutoFirma/AutoFirma.jar $* |
Donde la última línea indica la llamada a java con la ruta absoluta del jdk 1.8
En teroría ya debería encontrar los certificados
3. Ejecutar Autofirma desde la línea de comandos
Como se dice muy bien el Atareado se puede utilizar en línea de comandos. Os copio lo que el ha hecho a falta de probarlo. De momento yo no lo he podido hacer funcionar por no saber mi alias
1 2 3 4 5 | #firmar un documento pdf AutoFirma sign -i entrada.pdf -o salida.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontreña #firmar los documentos pdf de una carpeta for i in entrada_*.pdf; do AutoFirma sign -i $i -o ${i/.pdf/}_signed.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontraseña; done |
Pero si miramos el manual de Autofirma, vemos que si se puede obtener el alias e incluso utilzar otros almacenes de claves.
Si ejecutamos desde /usr/bin:
./Autofirma cmd -help
obtenemos:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Comandos cmd: sign (firma de fichero) cosign (cofirma de fichero) countersign (contrafirma de fichero) listaliases (lista los alias disponibles en el almacen) verify (abre un panel con la informacion de validacion de una firma o certificado) batchsign (firma/multifirma de lotes de ficheros) createdigest (creacion de huella digitales con interfaz grafica) checkdigest (comprobacion de huella digitales con interfaz grafica) |
Y si le damos a la ayuda de firmar
./Autofirma sign -help
obtenemos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Sintaxis: AutoFirma sign [options...] options -gui (Realiza la operacion con entorno grafico) -i inputfile (Ruta del fichero de entrada) -o outputfile (Ruta del fichero de salida) -algorithm algo (Algoritmo de firma) -format (Establece el formato de firma) auto (Seleccion de formato en base al fichero de entrada) cades (Formato CAdES) pades (Formato PAdES) xades (Formato XAdES) facturae (Firma de factura electronica) -config extraParams (Properties en texto plano con la configuracion de la operacion) -store (Establece el almacen de claves. Por defecto, el del sistema) auto (Almacen de claves del sistema) windows (Almacen de claves de Windows) mac (Almacen de claves de Mac OS X) mozilla (Almacen de claves de Mozilla Firefox) dni (DNI electronico) pkcs12:p12file (Almacen PKCS#12. "p12file" es la ruta del almacen) pkcs11:p11file (Almacen PKCS#11. "p11file" es la ruta del controlador) -password password (Establece la contrasena del almacen) -alias alias (Alias del certificado de firma) -filter filter (Filtro para seleccionar el certificado de firma) -xml (Formatea la respuesta como XML) |
Y si le damos a la ayuda de ver los alias:
./Autofirma listaliases -help
obtenemos:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Sintaxis: AutoFirma listaliases [options...] options -store (Establece el almacen de claves. Por defecto, el del sistema) auto (Almacen de claves del sistema) windows (Almacen de claves de Windows) mac (Almacen de claves de Mac OS X) mozilla (Almacen de claves de Mozilla Firefox) dni (DNI electronico) pkcs12:p12file (Almacen PKCS#12. "p12file" es la ruta del almacen) -password password (Establece la contrasena del almacen) -xml (Formatea la respuesta como XML) |
Veamos pues alguna de las diferentes opciones de firma
3.1 Utilizar el almacén de certificados de Mozilla
Primerament debemos obtener el ALIAS. desde /usr/bin ejecutamos:1 | ./AutoFirma listaliases -store mozilla |
Nos devuelve:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNSS INFO: Configuracion de NSS para SunPKCS11: name=NSSCrypto-AFirma library=/usr/lib/thunderbird/libsoftokn3.so attributes=compatibility slot=2 showInfo=false allowSingleThreadedModules=true nssArgs="configdir='sql:/USERHOME/.mozilla/firefox/fofoapzr.default-release' certPrefix='' keyPrefix='' flags='readOnly'" de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNssJava8 INFO: NSS necesita una precarga o tratamiento de sus dependencias: java.lang.reflect.InvocationTargetException de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNSS INFO: Proveedor PKCS#11 para NSS anadido: SunPKCS11-NSSCrypto-AFirma de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.AOKeyStoreManager init INFO: Inicializamos el almacen de tipo: DNIe y tarjetas FNMT-TIF de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.KeyStoreUtilities addPreferredKeyStoreManagers INFO: No se ha encontrado un DNIe: java.security.ProviderException: No se ha podido inicializar el proveedor de DNIe: es.gob.jmulticard.apdu.connection.NoReadersFoundException: No se detectaron lectores de tarjetas en el sistema de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities getMozillaPKCS11Modules INFO: Se incluiran los modulos nativos de DNIe/CERES si se encuentran configurados de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities getMozillaPKCS11Modules INFO: Obtenidos los modulos externos de Mozilla desde 'pkcs11.txt' de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaUnifiedKeyStoreManager init INFO: No se han encontrado modulos PKCS#11 externos instalados en Firefox EPN1 |
Y en la línea 24 vemos "EPN1" que es el alias en cuestión.
Ahora nos toca firmar:
1 | ./AutoFirma sign -i /home/ximo/xml/xml1.xml -o /home/ximo/xml/xmlq_firma.xsig -format xades -store mozilla -alias EPN1 |
3.2 Utilizar un fichero "p12" como almacén de certificados
Primerament debemos obtener el ALIAS. desde /usr/bin ejecutamos:
1 | ./AutoFirma listaliases -store pkcs12:/home/ximo/certs/mycert.p12 -password myPassword |
Nos devuelve simplemente "epn1" que es nuestro alias en cuestión.
También hubieramos podido utilizar keytool como se dice en Stackoverflow:
1 | keytool -v -list -storetype pkcs12 -keystore /home/ximo/certs/mycert.p12 -storepass myPassword |
y saldría:
1 2 3 4 5 6 | Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 1 entry Alias name: epn1 |
Con lo que el alias resultante es el mismo.
Ahora desde /usr/bin intentamos firmar:
1 | ./AutoFirma sign -i /home/ximo/xml/xml1.xml -o /home/ximo/xml/xml1_firma1.xsig -format xades -store pkcs12:/home/ximo/certs/mycert.p12 -alias epn1 -password myPassword |
Y obtenemos el mismo resultado.
4. Diferentes formatos de firma al ejecutar en "GUI" y línea de comandos
Hay alguna sutileza que trae como consecuencia que los formatos de salida sean ligeramente distintos.Veamos una imagen donde se ve que la estructura de la firma es prácticamente la misma pero cambia la localizaciíon del contenido a firmar.
La parte de arriba corresponde a una firma en línea de comandos y la de la parte de abajo desde la opción "GUI" (graphic user interface).
Se remarca los contenidos a firmar.
Si se intentan validar los ficheros con Autofirma (Archivo-> Ver Firma) se observa que ambos ficheros son correctos.
5. Firmar con tarjeta en Ubuntu
Para firmar con tarjeta hay que definir el lector de tarjetas criptográficas tal como se ha indicado en este post.
Una vez comprobado que funciona com Mozilla, se prueba con el programa keystore explorer, y vamos al menú superior y le indicamos File > Open Special > Open PKCS#11
se le da la librería de dicha tarjeta que es /usr/lib/lib/libaetpkss.so
y nos muestra los alias de los certificados (en este caso es EPN1)
-store pkcs11:/usr/lib/libaetpkss.so -alias EPN1 -password myPassword
Y nuestro comando quedaria
/usr/bin/AutoFirma sign -i ficheroAFirmar -o ficheroFirma -format cades -config "mode=implicit" -store pkcs11:/usr/lib/libaetpkss.so -alias EPN1 -password myPassword
6. Firma de expedientes. Firmar el índice con formato cades implícito
Según Gamuzi podemos ejecutar este comando:
/usr/bin/AutoFirma sign -i rutaFicheroEntrada -o rutaFicheroSalida -format cades -config "mode=implicit" -store pkcs12:$(RESOURCES)/certs/mycert.p12 -alias epn1 -password myPassword
Siendo :
pkcs12:$(RESOURCES)/certs/mycert.p12 la ruta al fichero donde está el certificado
epn1 el alias del certificado (se puede ver usando el programa KeyStore Explorer )
myPassword el password del certrificado
Para que sea el formato cades implicito: -format cades -config "mode=implicit"
7. Firma de expedientes. Firmar el índice con formato XadES Detached
También se puede utilizar el AutoFirma.jar ejecutado desde una versión de java
Siendo :/home/eduard/MyPrograms/jdk-Oracle-11.0.17/bin/java -jar /usr/lib/AutoFirma/AutoFirma.jar sign -i rutaFicheroEntrada -o rutaFicheroSalida -format xades -store pkcs12:rutaCertificado -alias epn1 -password myPassword -config "format=XAdES Detached"
pkcs12:rutaCertificado la ruta al fichero donde está el certificado en formato .p12
epn1 el alias del certificado (se puede ver usando el programa KeyStore Explorer )
myPassword el password del certrificado
Para que sea el formato XadeES Detached -format xades -config "format=XAdES Detached"
8. Manual de opciones de Autofirma
Este manual es una pasada.
has intentado firmar con VPS, sin lineas de comandos?
ResponderEliminarSegún tengo entendido y de acuerdo a lo que leí en www.descargarautofirma.es antes de descargar autofirma. Ellos indican en las preguntas frecuentes que colocan en su post de Guia de inicio "o algo así" que No existe la opción de descarga autofirma para Ubuntu.
ResponderEliminarEspero sea util esta información
Uno de los problemas que tenemos todos es la desinformación, lo que nos lleva muchas hora de "googleo". Autofirma en Ubuntu si funciona, por algo està desarrollada en Java.
EliminarSi amigo eso lo entiendo solo que tengo entendido que no existe en el manual de usuario de Autofirma, lo comento porque vi la información detallada aquí [url]https://www.descargarautofirma.es/[/url]
ResponderEliminarHola!
ResponderEliminarEstoy teniendo problemas para firmar un XML cuando le pasamos el parámetro "format=XAdES Enveloped" a alguno más le pasa?
Ejecutando el comando: autofirma sign -i fichero_a_firmar.xml -o fichero.xsig -store pkcs12:/etc/ssl/cert.p12 -password ********** -filter /etc/ssl/cert.p12 -format xades -xml -config "format=XAdES Enveloped"
Obtengo:
No se reconoce el parametro Enveloped
Sintaxis: AutoFirma sign [options...]