royrojas / FacturaElectronicaCR

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

Validación de firma XML con la llave criptográfica #7

Open rsantamariacr opened 6 years ago

rsantamariacr commented 6 years ago

Estoy revisando un XML firmado y obtengo el resultado de abajo

Me preocupa el mensaje de error: 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

Resultado:

Processing uploaded file '00100002010000000005_02_Firmado.xml'...

Using 'FacturaElectronica_V.4.2.local.xsd' to validate.

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-131140/C=CR/O=PERSONA JURIDICA/OU=CPJ/CN=CENTRO PANAMERICANO DE IDIOMAS C P I 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
OK
SignedInfo References (ok/all): 3/3
Manifests References (ok/all): 0/0

Signature is Valid

royrojas commented 6 years ago

Hacienda te rechazó la factura? Donde estás validando la factura?

rsantamariacr commented 6 years ago

Hola. Gracias por contestar. Estoy validando en el ambiente de pruebas con la llave criptográfica de pruebas.

Este es el archivo xml que estoy enviando: Factura_3101131140_00100002010000000006_02_Firmado_xml.txt

Para firmar estoy enviando la ruta donde está el archivo de la llave criptográfica y la clave.

Y esta es la respueta que estoy obteniendo de Hacienda:

50631101800310113114000100002010000000006101003080DESCONOCIDO2310113114016029608833Este comprobante fue aceptado en el ambiente de pruebas, por lo cual no tiene validez para fines tributarios La firma del comprobante electrónico no es válida0not(ancestor-or-self::ds:Signature)j6RVwkuMOR/hmbjN55CdKwP4OkZpkm8GwA1kvteiuio=Xc

Estos son los archivo de cominicación: Factura_3101131140_00100002010000000006_03_jsonEnvio.txt

Factura_3101131140_00100002010000000006_04_jsonRespuesta.txt

Factura_3101131140_00100002010000000006_06_jsonRespuestaClave.txt

rsantamariacr commented 6 years ago

Algo que no mencioné: estoy usando ASP.NET con .NET Framework 4.7.2 y Visual Basic. Seguí todos los pasos e importé todas las dll.

rsantamariacr commented 6 years ago

Tal vez el error en la firma es que estoy corriendo el sistema en local y no en el servidor. Cuando pasé el sistema al servidor obtuve el siguiente error: "Error interno" cuando trato de firmar el archivo XML. Esto cuando trato de firmar con la ruta de la llave criptográfica y su clave. Si trato de usar la huella digital obtengo el error "El certificado no se encuentra registrado".