royrojas / FacturaElectronicaCR

Ejemplo desarrollado en VB.NET y C# para la Factura Electrónica de Costa Rica
42 stars 32 forks source link

Consulta XML - firmado #3

Open ndlbass opened 6 years ago

ndlbass commented 6 years ago

Hola que tal? Muy buen trabajo se ve en este repositorio.

Le hago una consulta ya que estoy teniendo problemas en el firmado del xml (usando otra solucion en ruby): Hacienda me rechaza el comprobante por motivo "Firma inválida". Me han dicho que este error puede ser un poco generico y no necesariamente con la firma.

Entonces he probado su ejemplo de FE: https://github.com/royrojas/FacturaElectronicaCR/blob/master/_Ejemplos%20XML/xml_factura_electronica.xml, modificando la clave y fecha de emision, aun asi sigo recibiendo "Firma inválida".

Sabe si el formato de ese xml sigue siendo válido? De ser asi, es posible obtener un ejemplo de como queda el xml con el signature agregado?

Desde ya muchas gracias, Saludos

royrojas commented 6 years ago

Hola, el ejemplo que está en el Git hace la firma completa, ahi puedes ver como debe de quedar. Es probable que tengas algun error en el XML, puedes validarlo en este api http://apis.gometa.org/

ndlbass commented 6 years ago

Hola @royrojas, lo voy a validar con el link y te cuento. Muchas gracias por la rápida respuesta!

ndlbass commented 6 years ago

Hola de nuevo. Al parecer si tengo un problema con la firma. Este fue el resultado: image

Este el el xml firmado que utilice: https://gist.github.com/ndlbass/7f3bc91a9276f70fc6e1e66c6704822f

DanyMora commented 6 years ago

Yo tengo el mismo problema con esta aplicación, me estaba funcionando y de repente me empezó a indicar firma invalida, le he dado por todos los lados que se me ocurre pero no encuentro una solución. Pero por mi parte utilizando el API de Validación del XML si me dice que el XML es valido y que la firma es valida. Así que no se, que sera. Y ya estoy en mi deathline.

royrojas commented 6 years ago

Un problema normal es como se manipula el XML despues de la firma, entre el firmado y pasarlo a Base64 para enviarlo a hacienda. Si la firma la estas haciendo con XadesEpes y te da error, es probable que sea eso.

ndlbass commented 6 years ago

Buen dato, en el grupo de CRLibre me acaban de decir algo parecido.

Estoy asegurandome de limpiar espacios entre nodos y saltos de lineas antes del encode a base64. Tambien en mi caso, con ruby veo el base64 me estaba devolviendo un output con saltos. Estoy justamente revisando esto, les cuento como me va.

ndlbass commented 6 years ago

Bueno, tengo un base64 limpio de espacios y saltos de línea, este el json enviado a hacienda: https://gist.github.com/ndlbass/c55f76a7dce838fc6b41574a203c69d8

Y este el resultado de tu fantastica herramienta: image

Lo que no tengo control es al momento que este signer.jar levanta el archivo xml y lo firma. No se si está rompiendo algo en ese momento.

@royrojas te consulto desde la ignorancia. El error que me está dando tu log (aunque diga que está bien), te da una idea de por donde seguir atacando el problema?

XML is Valid
Checking signature...

xmlsec:
func=xmlSecOpenSSLX509StoreVerify:file=x509vfy.c:line=360:obj=x509-store:subj=X509_verify_cert:error=4:crypto library function failed:subj=/serialNumber=CPJ-3-101-720564/C=CR/O=PERSONA JURIDICA/OU=CPJ/CN=SELINA OPERATION SAN JOSE CITY SOCIEDAD ANONIMA;err=20;msg=unable to get local issuer certificate
func=xmlSecOpenSSLX509StoreVerify:file=x509vfy.c:line=408:obj=x509-store:subj=unknown:error=71:certificate verification failed:err=20;msg=unable to get local issuer certificate
func=xmlSecKeysMngrGetKey:file=keys.c:line=1370:obj=unknown:subj=xmlSecKeysMngrFindKey:error=1:xmlsec library function failed: 
func=xmlSecDSigCtxProcessKeyInfoNode:file=xmldsig.c:line=871:obj=unknown:subj=unknown:error=45:key is not found: 
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=565:obj=unknown:subj=xmlSecDSigCtxProcessKeyInfoNode:error=1:xmlsec library function failed: 
func=xmlSecDSigCtxVerify:file=xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec library function failed: 
Error: signature failed 
ERROR
SignedInfo References (ok/all): 2/2
Manifests References (ok/all): 0/0
Error: failed to verify file "xml/181.167.137.114-6819.xml.ugly"