Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03

Necesito ayuda con la generacion de DigestValue y SignatureValue

Todo lo que no cabe en los demas foros........
jorgesolano92
Mensajes: 6
Registrado: Mar Ago 23, 2022 9:11 am

Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor jorgesolano92 » Mar Ago 23, 2022 9:31 am

Buen día, primero que nada se que esto no tiene que ver con el sitio, pero ya no tengo mas manera de abordar el tema...

Explico: se nos ha asignado a un equipo de trabajo la realización de una aplicación muy sencilla donde se debe notificar un recorrido al ministerio de transporte en españa, dicho ministerio nos ha proporcionado un pdf donde explican un poco como debemos informar dichos datos y el endpoint, mas abajo en el documento se nos da un ejemplo del xml que debemos enviar, y asumo que debemos cambiar ciertos campos como el BinarySecurityToken, colocando allí lo que sería la parte pública del certificado (.p12 convertido a pem y usando la parte publica del mismo, lo que sería el .crt), se comenta esto "El mensaje SOAP se enviará junto con los datos de firma digital XML resultante de la firma del nodo “soapenv:Body” y un “BinarySecurityToken” que contenga la parte pública del certificado utilizado.", pero realmente es primera vez que hacemos esto y la gente del ministerio no nos aportan pistas para realizar esta firma, luego en el mensaje de respuesta siempre me dice lo mismo: no WS-Security results.

Voy a adjuntar lo que tengo a ver si es posible guiarme un poco en lo que se tiene que hacer, muchas gracias.

Al hacer "canonicalized" al nodo soapenv:Body me genera algo así:

Código: Seleccionar todo

I//WIXtqr2dZgN95wBAojCIfyPU=


No se si está correcto, o si estoy haciendo todo mal.
Adjuntos
test.xml
Éste es el xml que tengo donde he reemplazado solo el binarysecuritytoken, he dejado el mismo digest value y he quitado la firma que no se como generarla.
(5.63 KiB) Descargado 114 veces
Manual de integración Servicio Web - Registro VTC - V2.2.pdf
Éste es el archivo enviado por el ministerio, en la pág 18 está el xml de ejemplo.
(858.81 KiB) Descargado 119 veces

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 9:44 am

Mmmmh, es el mismo procedimiento que usamos aqui en Mexico para firmar la solicitud de cancelacion de una factura electronica.

Deja le doy una revisada y mas adelante te envio otro mensaje

Y no, la "canonicalized" no es lo que muestras, lo que muestras ya es el digest ...
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

jorgesolano92
Mensajes: 6
Registrado: Mar Ago 23, 2022 9:11 am

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor jorgesolano92 » Mar Ago 23, 2022 9:48 am

Ciertamente mi estimado, es el DigestValue, gracias por la aclaración, estoy atento a cualquier comentario.

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 2:25 pm

Existen certificados de prueba publicados que puedas compartir ?

(Pruebas, o como dice en el manual, "Integracion")
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

jorgesolano92
Mensajes: 6
Registrado: Mar Ago 23, 2022 9:11 am

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor jorgesolano92 » Mar Ago 23, 2022 3:18 pm

Hola, a qué te refieres con certificado? Al archivo .pem? O a otro xml que contenga información ya validada? En este último caso solo tenemos ese xml que está en el manual, nos han escrito solo que falta el signaturevalue, asumiré que el digestvalue es el resultante de la digestión del nodo soapenv:body que ellos dan de ejemplo.

Pero la verdad es que no sé cómo obtener el signaturevalue, desde php utilizo domdocument para leer el xml y obtener el nodo body, lo canonicalizo y luego hago un sha1 y lo convierto a base64, pero el valor resultante no es el mismo que está en el doc de ejemplo. De ahí no se que hacer para obtener el signaturevalue, ya que he leído que es un valor resultante de convertir a base64 el hash resultante, he de suponer que con eso se refieren al digestvalue? O estoy equivocado en todo? Estoy que me vuelvo loco con esto ya que no manejo este tema pero nada nada..

Agradezco que me estés leyendo.

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 3:38 pm

Si, me referia al archivo PEM, ........hay alguno para hacer pruebas?

OK. Esto es lo que debes hacer

Identificar bien el nodo que debes firmar.

Canonizarlo, esto es, quitarle los espacios inecesarios, los retornos de carro, poner en orden alfabetico los nodos y los atributos. Si no es *perfectamente* canonizado entonces la firma no sera valida.

Sacar el digest, el cual puede ser MD5, SHA1, SHA256, este digest es UNICO E IRREPETIBLE, no existe (teoricamente) dos digest iguales (en realidad si pueden existir, y a esto se le llama colision pero es, como decia, extremadamente raro)

Despues debes FIRMAR EL DIGEST, si, firmas el digest, y como es unico entonces el sello digital resultante tambien es unico, para la firma se utilizar la llave privada (esta dentro del .p12)

Como decia, esta firma se parece mucho a lo que aqui hacemos para firmar un documento de cancelacion, yo aprendi como hacerlo en esta pagina

Tambien lo hemos usado para autenticarnos en un web service de nuestro gobierno

Tambien busca aqui en el foro "OpenSSL X509" X509 es el formato que normalmente se usa para el certificado publico, lo vas a necesitar para obtener el certificado en base64 (mas o menos como el PEM, pero sin retorno de carro) y el numero de serie, necesario para armar la firma

TAMBIEN COMENTARTE, que estos son los pasos para hacerlo "manual" y que aqui en el foro asi lo hemos hecho, pero porsupuesto hay librerias, modulos, etc que pueden hacer todo esto automatico, precisamente www.cryprosys.net es una de esas herramientas, aunque tiene costo
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

jorgesolano92
Mensajes: 6
Registrado: Mar Ago 23, 2022 9:11 am

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor jorgesolano92 » Mar Ago 23, 2022 3:46 pm

Te adjunto el certificado, el password del .p12 es xxxxxxx por si lo necesitas, ya leo detenidamente la respuesta que me has dado, muchas gracias.

[Certificado borrado por Admin]

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 4:02 pm

OK, borre el certificado porque tengo duda, me parece un certificado real, y no deberia estar publicado

Hago pruebas y te mando mensaje mas adelante
Adjuntos
certificado.png
certificado.png (11.6 KiB) Visto 2942 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 4:20 pm

OK. Paso 1. Identificar el nodo que debes firmar.

Yo creo (nota que repetire varias veces el "Yo creo", indicando que no estoy 100% seguro, pero hago mi mejor esfuerzo) que es el nodo de <body>

Código: Seleccionar todo

<body>
<vtcservicio cgmunicontrato="079" cgmunifin="079" cgmuniinicio="079" cgmunilejano="079" cgprovcontrato="28" cgprovfin="28" cgprovinicio="28" cgprovlejano="28" direccionfin="destino" direccioninicio="origen" direccionlejano="lejano" fcontrato="2019-01-01T13:00:00" ffin="2019-12-31" fprevistainicio="2019-12-31T15:00:00" matricula="9999-ZZZ" nif="99999999R" niftitular="11111111H" nom="INTERMEDIARIO" nombtitular="TITULAR" veraz="S"/>
</body>
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Necesito ayuda con la generacion de DigestValue y SignatureValue

Mensajepor Dado » Mar Ago 23, 2022 4:24 pm

Paso 2. Canonizarlo. Quitar espacios inutiles, retornos de carro, ordenar alfabeticamente nodos y atributos, expander nodos

Quedaria asi :

Código: Seleccionar todo

<body><vtcservicio cgmunicontrato="079" cgmunifin="079" cgmuniinicio="079" cgmunilejano="079" cgprovcontrato="28" cgprovfin="28" cgprovinicio="28" cgprovlejano="28" direccionfin="destino" direccioninicio="origen" direccionlejano="lejano" fcontrato="2019-01-01T13:00:00" ffin="2019-12-31" fprevistainicio="2019-12-31T15:00:00" matricula="9999-ZZZ" nif="99999999R" niftitular="11111111H" nom="INTERMEDIARIO" nombtitular="TITULAR" veraz="S"></vtcservicio></body>
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!


Volver a “Otros”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados