Mostrando entradas con la etiqueta autofirma. Mostrar todas las entradas
Mostrando entradas con la etiqueta autofirma. Mostrar todas las entradas

martes, 10 de septiembre de 2019

Llamada a programas EJECUTABLES desde Java

1. Introducción


Uno de los principales problemas que tenía utilizando Java era el no saber como llamar a programas ejecutables.

Por tanto cuando se creaba un proyecto se tenía que ir agregando dependencias hasta que éste se hacía insostenible por su tamaño y problemas entre las versiones de dependencias.

He estado viendo algunos enlaces interesantes :

  • Mkyong : Explica muy bien las dos alternativas que ofrece Java ( ProcessBuilder y Runtime.getRuntime().exec)
  • Zetcode
  • Baeldung que incluye las mejoras de Java 9 para tratar las "pipes"


2. Apache commons exec

La mayor parte de las veces he tenido una buena experiencia con Apache, El problema es que esta libreria es ya algo antigua.

La dependencia maven es:


1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-exec -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-exec</artifactId>
    <version>1.3</version>
</dependency>

Veamos el código fuente de una clase de utilidad que he creado junto con un "main" de prueba.


 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package openadmin.utils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecuteResultHandler;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.ExecuteWatchdog;
import org.apache.commons.exec.PumpStreamHandler;

public class CmdUtils {
	/**
	 * 
	 * @param commandLine            Line to execute
	 * @param optSuccessValue        (Optional) If the success return is not equal
	 *                               to "0". For instance Acrobat returns 1
	 * @param optMaxDurationMiliSecs (Optional) Maximum wait until kill the program
	 *                               if blocked,
	 * @param isAsync                True if we want to execute the command
	 *                               asynchronously
	 * @param outputStream           ByteArrayOutputStream to collect the output
	 *                               messages of the program
	 * 
	 * @return
	 * @throws ExecuteException
	 * @throws IOException
	 */
	public static int execProgram(String commandLine, Integer optSuccessValue, Long optMaxDurationMiliSecs,
			Boolean isAsync, ByteArrayOutputStream outputStream) throws ExecuteException, IOException {

		int exitValue = 0;
		ExecuteWatchdog watchdog = null;

		CommandLine cmdLine = CommandLine.parse(commandLine);
		DefaultExecutor executor = new DefaultExecutor();

		if (outputStream != null) {
			PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
			executor.setStreamHandler(streamHandler);
		}

		if (optSuccessValue != null)
			executor.setExitValue(optSuccessValue);
		if (optMaxDurationMiliSecs != null) {
			watchdog = new ExecuteWatchdog(optMaxDurationMiliSecs);
			executor.setWatchdog(watchdog);
		}
		if (isAsync != null && isAsync)
			executor.execute(cmdLine, new DefaultExecuteResultHandler());

		else
			exitValue = executor.execute(cmdLine);

		return exitValue;
	}

	public static void main(String[] args) {

		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		
		String[] commandLines = { "/usr/bin/java -version", "java -version", "ls /home/eduard/",
				"/usr/bin/AutoFirma  sign -i /home/ximo/kk/xmlprueba.xml -o /home/ximo/kk/xml_firma103.xsig -format xades -store mozilla -alias EPN1" };

		int i = 0;
		try {
			for (String s : commandLines) {
				System.out.println(i++ + "-->" + s);
				execProgram(s, null, null, null, outputStream);
				int j=0;
				for (String line : outputStream.toString().split("\\n")) 
					System.out.println("Action:" + i + "." + ++j + "-->" + line);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}






Aquí se ejecutan 4 comandos (en azul, líneas 63-64) de forma secuencial (en un sistema Ubuntu) con ejecución satisfactoria. Observar que en última sentencia se llama AUTOFIRMA para firmar un documento "xml" utilizando un certificado del repositorio de Mozilla. si se quiere mas detalles, se puede ver un post anterior sobre Autofirma.

Observar que queremos interceptar la salida del comando mostrando las líneas (en el caso del "ls" parece que no va...)

Observar también que se puede ejecutar de forma asíncrona con el parámetro isAsync

Happy coding!

jueves, 25 de julio de 2019

Autofirma (II), Ubuntu 18.04. Guia definitiva. Perdida de certificados. Ejecución en consola de Autofirma. Diferentes resultados de firma. Cades implicit. PKCS#11

0. Introducción

Me he inspirado bastante en Alvaro Gonzalez Sotillo.
Cuando se instala una nueva versió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.

Ojo solo funciona con java 1.8, Ojo solo funciona con un JDK de Oracle, de todas formaspor tanto hay que buscar la ruta de instalación de java 1.8  de Oracle y modificar el fichero /usr/bin/Autofirma para que contenga


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)



Por tanto para elegir nuestro certificado utilizaremos

-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
/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"
Siendo :
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. Firma de expedientes. Firmar de la parte de contenido del fichero índice de expedientes (<ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES....) al que le tenemos que indicar el id. El formato a firmar es XadES Enveloped y descargamos la firma en otra etiqueta xml que contiene namespaces. Le tenemos que pasar el certificado para firmar

Este comando debe ir en una sola línea (observese que con "\" se ha roto las líneas para que se vwea mejor. 

java -jar /usr/lib/AutoFirma/AutoFirma.jar sign  -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades -store pkcs12:Certificado.p12 -alias mialias -password micontraseña \
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

OJO observar:
1. La separación "\n" de los parámetros del config
2. nodeToSign apunta al id del campo y no a la tag
3. Para localizar el tag al que se anexa la firma se utiliza local_name() para evitar los namespaces
 
Veamos parte del documento a firmar y queremos firmar el Id (EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C) y descargarlo dentro de <ns3:FirmaConCertificado>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<insidews:expediente xmlns:ns2="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e" xmlns="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e/contenido" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://administracionelectronica.gob.es/ENI/XSD/v1.0/firma" xmlns:insidews="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/WebService" xmlns:ns9="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/expediente-e" xmlns:ns5="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/metadatos" xmlns:ns6="http://administracionelectronica.gob.es/ENI/XSD/v1.0/documento-e/contenido" xmlns:ns7="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e" xmlns:ns8="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/metadatosAdicionales">
    
<ns7:expediente xmlns:insidews="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/WebService" xmlns:ns9="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/expediente-e" xmlns:ns8="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/metadatosAdicionales" Id="ES_L01462384_2022_EXP_61561C" xmlns:ns2="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e" xmlns="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e/contenido" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://administracionelectronica.gob.es/ENI/XSD/v1.0/firma" xmlns:ns5="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/metadatos" xmlns:ns6="http://administracionelectronica.gob.es/ENI/XSD/v1.0/documento-e/contenido" xmlns:ns7="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e">
    <ns2:indice Id="EXP_INDICE_ES_L01462384_2022_EXP_61561C">
        <ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C">
            <FechaIndiceElectronico>2022-11-26T13:41:52.338+01:00</FechaIndiceElectronico>
            <CarpetaIndizada>
                <IdentificadorCarpeta>carpeta1</IdentificadorCarpeta>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445532_0000_perrycollins200</IdentificadorDocumento>
                    <ValorHuella>9f94246bf88cc27aa324399adfcc481bc30e8259edaae605c56775696c2c6e0e69716d600a8f52d33b9fdf8e3af6012809af7181c942f6a1e7629c2d07bb66a5</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:54:10.242+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00001</OrdenDocumentoExpediente>
                </DocumentoIndizado>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445533_0000_Peticiondeacces</IdentificadorDocumento>
                    <ValorHuella>6aa7c4fff6e42212a79b629fa7b0c19bbd77d500fe68a178ce0138b04b6c895b25979ebe59272fca6a8fd4f1694c91ff55709e635d8a7d1329a74198103583b4</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:54:44.178+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00002</OrdenDocumentoExpediente>
                </DocumentoIndizado>
            </CarpetaIndizada>
            <CarpetaIndizada>
                <IdentificadorCarpeta>carpeta2</IdentificadorCarpeta>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445534_0000_ResolucionDTIC2</IdentificadorDocumento>
                    <ValorHuella>1414c6574f6ab51e40cb7a02a035f0b422bd2dda5f58ea504f40fd53f6d5bebe13f6d99151a098756c850bd849485745c37c8ec8621f47cea61b658b61b7165d</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:56:52.002+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00001</OrdenDocumentoExpediente>
                </DocumentoIndizado>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445535_0000_planostaladrode</IdentificadorDocumento>
                    <ValorHuella>9b6b323e0de8dfb3929094d9508f314cdcc360689f84e79630238fe33de92c8a638a1f71e42c255de3c59f429a45b193316eb61487162904507c529d33aba904</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:57:10.953+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00002</OrdenDocumentoExpediente>
                </DocumentoIndizado>
            </CarpetaIndizada>
        </ns2:IndiceContenido>
        <ns3:firmas>
            <ns3:firma Id="FIRMA_0" ref="#EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C">
                <ns3:TipoFirma>TF03</ns3:TipoFirma>
                <ns3:ContenidoFirma>
                    <ns3:FirmaConCertificado>
                        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-Signature"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference Id="Reference-a73c9062-80a7-410c-9fad-3c003fd93ab4" URI="#EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><ds:XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>Mz2e0Uakxd2DFXZuV0eWNeSIL879M50Ey4NgX6clQO/LaxBQrKZCHbDKdR9PJthaOcsyfkkfkxeviqzqyOWqog==</ds:DigestValue></ds:Reference><ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignedProperties"><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>BOlDhhWNelo9kAJ6+8TGaImEsR5Nud81v/jAgyby7tx7DT6py2wRxis0DsHy1UbWJfacc63uVSUs6Af8/SqiKQ==</ds:DigestValue></ds:Reference><ds:Reference URI="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-KeyInfo"><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>lupfsLEvciK+yG8QVDqpgOa+RXXl4Fit/ssort6e7CbqPF5TAXt2ihEPqKAaw8Y3ZvvbGWMRzoJqkTX2z3zu+Q==</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignatureValue">bUENUAShsZLdDLOZ5HpMQWckPN9MIeoiY4O1AHuj6zzuFSYn4rBJX/+6IdW+Ffpiy8Pd5GSF4W9YchfrkIcQZp9h9zMa/jdJBfOiESXXstP9rOQtUX7hiUOEHE8I6oli972IC5mQt1jucMfFi+qyHs/dbqfs+L6vG67N5XUDX+vZcJuGbyiufjhK3JlalORSgNw8pxCzAHZZ8tCtcDID2Dps+qsunHOwROt/C9gfLeLbIn2QQjO9ekZB1wJnDtmEJ1yRih4LVZKXwU0JXk3wAjN40tLv2++CyvLc6AZ3m9vMAcVyQVPDm5kw1pwD25CIE1kUkPLWd/seluOR/b5Cag==</ds:SignatureValue><ds:KeyInfo Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-KeyInfo"><ds:X509Data><ds:X509Certificate>MIIIOjCCByKgAwIBAgIQXyFDAiGNkgFmQ1XjDlQIpzANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNFUkVTMRswGQYDVQQDDBJBQyBSZXByZXNlbnRhY2nDs24wHhcNMjQwNTE0MTIxNTMxWhcNMjcwNTE0MTIxNTMwWjCB6TELMAkGA1UEBhMCRVMxDzANBgNVBAcMBk1BRFJJRDE1MDMGA1UECwwsU0VDUkVUQVJJQSBHRU5FUkFMIERFIEFETUlOSVNUUkFDSU9OIERJR0lUQUwxPzA9BgNVBAoMNk1JTklTVEVSSU8gREUgVFJBTlNGT1JNQUNJT04gRElHSVRBTCBZIEZVTkNJT04gUFVCTElDQTESMBAGA1UEBRMJUzI4MDE1MDJCMRgwFgYDVQRhDA9WQVRFUy1TMjgwMTUwMkIxIzAhBgNVBAMMGlNFTExPIEVOVElEQUQgU0dBRCBQUlVFQkFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2f5vHYqVoHCXdLjBLj/msWdGY+Kq8O/mJYkyrnKsBwhrYkuPFojV92GqVfl2TtZelTQJJNnUSEDw0IDU2IvekbjeCi6q8CdrQbmT5IPbNz6A4IYSnxFBvKmzpz915oHvyQvevsblzY/fWPwVTTWJNrmwuH5mTHupyVTDGJqHZ8aGs5+8Ni+W3SqbnnblXcbZangGdz7si/q0XnV4xWfZf/WCnlLuVZ+DrbFNlJuki+MEjIltm7YJmJ5OmLOPGYjn3MokMZctje8FZdwwh5lLcAdZeaOOBG+IUA9goes148MdYdOQYVn9ez2iCU8yp48MfsHd4DIB4NloGcIPXYvfDwIDAQABo4IEdzCCBHMwgZ0GA1UdEQSBlTCBkqSBjzCBjDEpMCcGCSsGAQQBrGYBCAwaU0VMTE8gRU5USURBRCBTR0FEIFBSVUVCQVMxGDAWBgkrBgEEAaxmAQcMCVMyODAxNTAyQjFFMEMGCSsGAQQBrGYBBgw2TUlOSVNURVJJTyBERSBUUkFOU0ZPUk1BQ0lPTiBESUdJVEFMIFkgRlVOQ0lPTiBQVUJMSUNBMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMCoGA1UdJQQjMCEGCCsGAQUFBwMCBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwgYIGCCsGAQUFBwEBBHYwdDA9BggrBgEFBQcwAYYxaHR0cDovL29jc3ByZXAuY2VydC5mbm10LmVzL29jc3ByZXAvT2NzcFJlc3BvbmRlcjAzBggrBgEFBQcwAoYnaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY2VydHMvQUNSRVAuY3J0MB0GA1UdDgQWBBSke+Fd61MIqtAjWJpLbQyaxvenrjCCATMGA1UdIASCASowggEmMIIBFwYKKwYBBAGsZgMLBDCCAQcwKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2RwY3MvMIHZBggrBgEFBQcCAjCBzAyByUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBzZWfDum4gcmVnbGFtZW50byBldXJvcGVvIGVJREFTLiBTdWpldG8gYSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGV4cHVlc3RhcyBlbiBsYSBEUEMgZGUgRk5NVC1SQ00gY29uIE5JRjogUTI4MjYwMDRKIChDL0pvcmdlIEp1YW4gMTA2LTI4MDA5LU1hZHJpZC1Fc3Bhw7FhKTAJBgcEAIvsQAEBMIGmBggrBgEFBQcBAwSBmTCBljAIBgYEAI5GAQEwEwYGBACORgEGMAkGBwQAjkYBBgIwaAYGBACORgEFMF4wLRYnaHR0cHM6Ly93d3cuY2VydC5mbm10LmVzL3Bkcy9QRFNfZXMucGRmEwJlczAtFidodHRwczovL3d3dy5jZXJ0LmZubXQuZXMvcGRzL1BEU19lbi5wZGYTAmVuMAsGBgQAjkYBAwIBDzAfBgNVHSMEGDAWgBTcUJaf1zGJyRHk75Zf9l+CUkZiUzCB4QYDVR0fBIHZMIHWMIHToIHQoIHNhoGdbGRhcDovL2xkYXByZXAuY2VydC5mbm10LmVzL0NOPUNSTDIzNTksT1U9QUMlMjBSZXByZXNlbnRhY2lvbixPVT1DRVJFUyxPPUZOTVQtUkNNLEM9RVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYraHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY3Jsc3JlcC9DUkwyMzU5LmNybDANBgkqhkiG9w0BAQsFAAOCAQEAu1r0RlFRSfBUDCl4YlZCSNIDdNbFGGe7ghqyXr81/o1UIs+CdFBVis3SVh6tPc27HogCuzRHjEimwIgQjZnC4i/IzYAMixnZNW4UMYW4sQcVC45s+GqSSEgAMGzB5XiiZLfMyuCWtHjb6da4QcZ3pZU6h4hrSi8yCroQgtKmaseyNTpInq75N9u5tf9sX+kee8TpWUToMfTyxjOKQRQTCwOcbcKM1GCFz5zbRyLGK9vwOiDaA8yBp55O8jg/a5N1mj8eTSXwaGRLqTV9R9BpNXIQsBg2hlz2uJe1AT16zWWG8G6B4xDprIyPRHqN1yeUWqqrJJ3A5i17TabmIY06nA==</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>2f5vHYqVoHCXdLjBLj/msWdGY+Kq8O/mJYkyrnKsBwhrYkuPFojV92GqVfl2TtZelTQJJNnUSEDw0IDU2IvekbjeCi6q8CdrQbmT5IPbNz6A4IYSnxFBvKmzpz915oHvyQvevsblzY/fWPwVTTWJNrmwuH5mTHupyVTDGJqHZ8aGs5+8Ni+W3SqbnnblXcbZangGdz7si/q0XnV4xWfZf/WCnlLuVZ+DrbFNlJuki+MEjIltm7YJmJ5OmLOPGYjn3MokMZctje8FZdwwh5lLcAdZeaOOBG+IUA9goes148MdYdOQYVn9ez2iCU8yp48MfsHd4DIB4NloGcIPXYvfDw==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo><ds:Object><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-QualifyingProperties" Target="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-Signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><xades:SignedProperties Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignedProperties"><xades:SignedSignatureProperties><xades:SigningTime>2024-11-06T06:59:28+01:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>ebaS6bwc7bz6ZxE3G7/NePBnLnySv1M09PczcAL4W2RfYNko3ojfZgWp//BdzfsQc2W5sR5X9soSMgpqKPMV6g==</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=AC Representación, OU=CERES, O=FNMT-RCM, C=ES</ds:X509IssuerName><ds:X509SerialNumber>126449364486182580284042377630877747367</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#Reference-a73c9062-80a7-410c-9fad-3c003fd93ab4"><xades:Description/><xades:ObjectIdentifier><xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier><xades:Description/></xades:ObjectIdentifier><xades:MimeType>text/xml</xades:MimeType><xades:Encoding/></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature>
                    </ns3:FirmaConCertificado>
                </ns3:ContenidoFirma>
            </ns3:firma>
        </ns3:firmas>
    </ns2:indice>
    <ns5:metadatosExp Id="EXP_ES_L01462384_2022_EXP_61561C_METADATOS">
        <ns5:VersionNTI>http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e</ns5:VersionNTI>
        <ns5:Identificador>ES_L01462384_2022_EXP_61561C</ns5:Identificador>
        <ns5:Organo>L01462384</ns5:Organo>
        <ns5:FechaAperturaExpediente>2022-11-26T13:41:52.338+01:00</ns5:FechaAperturaExpediente>
        <ns5:Clasificacion>245055</ns5:Clasificacion>
        <ns5:Estado>E01</ns5:Estado>
    </ns5:metadatosExp>
    <ns7:VisualizacionIndice Id="VISUALIZACION_INDICE">
        <ns6:ValorBinario>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Mjg+PgplbmRvYmoKOSAwIG9iago8PC9EVyAxMDAwL1N1YnR5cGUvQ0lERm9udFR5cGUyL0NJRFN5c3RlbUluZm88PC9TdXBwbGVtZW50IDAvUmVnaXN0cnkoQWRvYmUpL09yZGVyaW5nKElkZW50aXR5KT4+L1R5cGUvRm9udC9CYXNlRm9udC9VWFpNSlorTGliZXJhdGlvblNhbnMvRm9udERlc2NyaXB0b3IgOCAwIFIvVyBbM1syNzddXS9DSURUb0dJRE1hcC9JZGVudGl0eT4+CmVuZG9iagoxMCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIxNT4+c3RyZWFtCnicXZBBS8QwEIXv+RVzdPGQbvVYclEWenAVW8VrNpmWgJ2EaXrov3ca1y44kIF5L194E/3UPrcUMug3jq7DDEMgzzjHhR3CBcdA6liDDy5fp9LdZJPSAnfrnHFqaYiqaUC/izlnXuGu77/uq4PSr+yRA42iPNYfn6J0S0rfOCFlqJQx4HGQp15sOtsJQRfwJvZrQqjLfPxN4KLHOVmHbGlE1VRSpjlJGYXk/9lX6DLcbj+YvddVYf7cDd8229O4hVmClvVLnC1IINx/KMW0USBH/QAYvmv/CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9TdWJ0eXBlL1R5cGUwL1R5cGUvRm9udC9CYXNlRm9udC9VWFpNSlorTGliZXJhdGlvblNhbnMvRW5jb2RpbmcvSWRlbnRpdHktSC9EZXNjZW5kYW50Rm9udHNbOSAwIFJdL1RvVW5pY29kZSAxMCAwIFI+PgplbmRvYmoKMyAwIG9iago8PC9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udC9CYXNlRm9udC9IZWx2ZXRpY2EvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nPj4KZW5kb2JqCjUgMCBvYmoKPDwvS2lkc1s2IDAgUl0vVHlwZS9QYWdlcy9Db3VudCAxL0lUWFQoMS4zLjI2KT4+CmVuZG9iagoxMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNSAwIFIvVmVyc2lvbi8xLjc+PgplbmRvYmoKMTIgMCBvYmoKPDwvTW9kRGF0ZShEOjIwMjQxMTA2MDY1OTI4KzAxJzAwJykvQ3JlYXRpb25EYXRlKEQ6MjAyNDExMDYwNjU5MjgrMDEnMDAnKS9Qcm9kdWNlcihPcGVuUERGIDEuMy4yNik+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMTQyNyAwMDAwMCBuIAowMDAwMDA5NTA0IDAwMDAwIG4gCjAwMDAwMDk2MzkgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDA5NzI3IDAwMDAwIG4gCjAwMDAwMDEyOTcgMDAwMDAgbiAKMDAwMDAwMTUyMCAwMDAwMCBuIAowMDAwMDA4ODI2IDAwMDAwIG4gCjAwMDAwMDkwMTIgMDAwMDAgbiAKMDAwMDAwOTIyMSAwMDAwMCBuIAowMDAwMDA5NzkxIDAwMDAwIG4gCjAwMDAwMDk4NDkgMDAwMDAgbiAKdHJhaWxlcgo8PC9JbmZvIDEyIDAgUi9JRCBbPDM1MmNjNGQ1MDAxOWFlOWZiNGEyM2UxYmI3ZThjMWE5PjxmYzE3NTFhNTBiOTI3NjhhZDYwMmI2MWYzNTRhYzQ2Yz5dL1Jvb3QgMTEgMCBSL1NpemUgMTM+PgpzdGFydHhyZWYKOTk2NgolJUVPRgo=</ns6:ValorBinario>
        <ns6:NombreFormato>PDF</ns6:NombreFormato>
    </ns7:VisualizacionIndice>
</ns7:expediente>

    <ns9:metadatosAdicionales>
        <ns8:MetadatoAdicional tipo="string" nombre="eEMGDE3.1.Nombre.NombreNatural">
            <ns8:valor xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">61561C: Expediente Edu meu</ns8:valor>
        </ns8:MetadatoAdicional>
        <ns8:MetadatoAdicional tipo="string" nombre="eEMDGE.22.3.Clasificacion.TipoClasificacion">
            <ns8:valor xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Funcional</ns8:valor>
        </ns8:MetadatoAdicional>
    </ns9:metadatosAdicionales>
</insidews:expediente>           

OJO: He probado con esto y funciona también

autofirma sign  -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades -store pkcs12:Certificado.p12 -alias mialias -password micontraseña \
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

9. Firma de expedientes. Firmar de la parte de contenido del fichero índice de expedientes (<ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES....) al que le tenemos que indicar el id. El formato a firmar es XadES Enveloped y descargamos la firma en otra etiqueta xml que contiene namespaces. Pide el certificado para firmar

Aqui le indicamos el parámetro -certgui para que elija el certificado por parte del firmante

autofirma sign -certgui -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades 
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

10. Manual de opciones de Autofirma

Este manual es una pasada.
y este otro es la actualización