FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Firma Electronica con OpenSSL
Buenas noches, tengo un un problema con la firma digital para la facturación electrónica en linea, no entiendo a que parte del XML se refiere en el punto 6 del proceso de firmado https://siatinfo.impuestos.gob.bo/in.../firma-digital, genero la factura en XML hago el proceso de canonicalización del XML (c14n), tengo la llave privada y publica generada con OpenSSL a partir del certificado que me otorgan, no se de donde o en que parte esta la sección de la firma o a que se refiere
Este es el error que me devuelve al enviar la factura Código:
<mensajesList> <codigo>921</codigo> <descripcion>EL FIRMADO DEL XML ES INCORRECTO: Validacion Signature, false,</descripcion> </mensajesList> Proceso de Firmado A efectos de poder firmar un documento, es necesario disponer de una llave pública y una privada; tener implementado algoritmos de conversión a Base 64, canonicalización, SHA256 y RSA Sha256 V2 y seguir los siguientes pasos:
|
#2
|
||||
|
||||
Te diría que busques en los hilos de TicketBAI y Factura electrónica.
En ambos se firman XMLs y ahí puedes ver diferentes formas de firmarlos y diferentes componentes para hacerlo. Creo recordar que en alguno he visto algo de OpenSSL. También puedes encontrar algunos códigos de ejemplo, que te ayuden a empezar y aunque no sea exactamente lo que necesitas te pueden dar una guía.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Muchas gracias, revisare TicketBAI y Factura electrónica, pero mi duda es más a que le llaman sección de la firma
|
#4
|
||||
|
||||
Cita:
Debemos enviar un XML y ese mismo fichero tiene que tener una sección de firma. El algoritmo debe ser SHA256 (igual que el tuyo) y en cuanto a las etiquetas que debe rellenar en la firma deben ser muy similares a las que tenemos que rellenar nosotros.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Cita:
Saludos. Última edición por Neftali [Germán.Estévez] fecha: 28-03-2023 a las 14:57:43. Razón: Corregidos los links. |
#6
|
||||
|
||||
Cita:
No me carga el sitio web, pero con la serie de pasos que envías parece que debes de obtener en un string todo el nodo que contiene la firma y codificarlo en SHA256 y luego el nodo con el valor ya codificado en SHA256 debes de exportarlo a un .txt y luego hacer una digestión con OPENSSL y la llave privada en RSA SHA256 donde exportaras un archivo .bin y luego ese .bin codearlo a base 64 Algo así se hace en los webservice de hacienda en México y parece que es muy similar con ustedes. |
#7
|
|||
|
|||
Cita:
Gracias Neftali, se parece bastante similar, haré algunas pruebas con esa guia |
#8
|
|||
|
|||
Cita:
Muchas gracias JCz, no es obligatorio lo del OpenSSL pero me parece la mejor opción, baje el ejemplo de proyectoacbr, y esta bien tiene toda la implementación de OpenSSL, también intente con las librerías DLL de Chilkat, pero no logre firmar o me falta implementar algunas cosas más en el envió, aun no provee Secure Black Box |
#9
|
|||
|
|||
Cita:
Muchas gracias pgranados, si hice lo que me sugieres tengo la parte de la factura que le saco el has256 y lo convierto en base64, el resultado obtenido lo pongo en la etiqueta DigestValue que genero el XML de signature con la configuración a ese le saco el SHA256 y lo encripto con RSA mediante el OpenSSL con la llave privada obteniendo el resultado lo codifico con base64 y lo pongo en la etiqueta SignatureValue y para finalizar relleno el X590Certificate con la llave publica, combino los 2 archivo XML de la factura con signature, verificando con XSD que no devuelve y procedo al envió dando el error "EL FIRMADO DEL XML ES INCORRECTO: Validacion Signature, false," de este XML obtengo el RSA+SHA256+Base64 para ponerla en SignatureValue, creo que el error esta en esta parte, no se si obtine de todo este fragmento o solo de la etiqueta "DigestValue" o de otra Código PHP:
este es el XML unido, validado con XSD y enviado a grandes rasgos Código PHP:
|
#10
|
|||
|
|||
Cita:
Espero te sirva de ayuda. |
#11
|
|||
|
|||
Cita:
|
#12
|
|||
|
|||
Estimado JCz, no dio, genere el código con Chilkat, todo va bien mando mi factura generada en XML, comienza el proceso hasta el momento que realiza la firma, hay sale "Failed" y termina no hay más información, tampoco encuentro soporte
|
#13
|
|||
|
|||
Volviendo con lo que estoy realizando, no se que parte es la "sección de la firma" si es todo lo que esta en Signature, solo DigestValue o que fragmento es el que debo utilizar para hacer el firmado RSA+SHA26+Base64 con la llave privada y poner en SignatureValue o que es lo que tengo que procesar
Código PHP:
|
#14
|
|||
|
|||
Queriendo colaborar
Vamos paso a paso: ¿Como obtuviste este valor?
Cita:
Última edición por Casimiro Notevi fecha: 01-04-2023 a las 11:59:50. |
#15
|
|||
|
|||
Cita:
Para obtener el <DigestValue>, primero hago la canonicalización de la factura.xml y de este archivo en C14N saco el sha256 con el openssl y lo transformo a base 64 openssl dgst -sha256 -binary -out factura.256 factura.xml openssl base64 -in factura.256 -out factura.b64 para el valor de <SignatureValue> lo obtengo aplicando el algoritmo RAS-SHA26 de la factura.xml y trasformo a base 64 el resultado openssl dgst -sha256 -sign clave_privada.pem -out firma.key factura.xml openssl base64 -in firma.key -out firma.b64 para el valor <X509Certificate> lo tomo directamente del certificado, quitando el encabezado y final del archivo posteriormente complemento la factura.xml con las etiquetas de <Signature> ..... y lo anteriormente generado para finalizar verifico la factura.xml con el xsd de la misma y envío Gracias |
#16
|
|||
|
|||
Cita:
es el mismo error que me da cuando genero manualmente la firma con el openssl saludos |
#17
|
|||
|
|||
Es posible que puedas pasar un XML válido, que haya sido aprobado por el SIAT? También el xml que lo generas.
|
#18
|
|||
|
|||
Cita:
Gracias JCz, al final logre firmar con Chilkat aumentado unos parámetros en CkXmlDSigGen_putBehaviors(gen, 'IndentedSignature,AttributeSortingBug,EnvelopedTransformFirst'), pero no se porque tenga que ponerlos así, pero al final funciono, sin eso no daba de todos modos adjunto los 2 archivos uno valido y el otro con error antes del cambio, pero debería poderse firmar con openssl o tal vez mi error este en la canonicalización, porque la factura en XML la canonicalizo a C14N con otra herramienta libxml2 que tal vez deba poner algún parámetro |
#19
|
|||
|
|||
Cita:
En la que rechaza lo tienes Código PHP:
|
#20
|
|||
|
|||
Cita:
Gracias por responder, no se de firmas digitales, pero me parece que eso no interesaría ya que la firma se la obtiene o se realiza de la parte de la factura nada más y el resto me parece no interesa o no interviene por que es información complementaria y el calculo solo se realiza del XML de la factura, para mi es el fragmento de texto de la factura por el algoritmo RSA+HAS256, sin tomar en consideración lo que se le va aumentando |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Alguien con experiencia en firma electrónica de PDF? | starlet | Varios | 9 | 05-06-2017 19:52:30 |
Firma en factura electrónica facturaE | Galahad | Varios | 8 | 19-06-2016 01:45:14 |
Validar firma de factura electrónica (formato Facturae) | maro | Varios | 79 | 22-09-2015 10:45:17 |
problema con openssl | expertis | Varios | 1 | 11-10-2012 23:53:54 |
capturador firma electronica | elguille | Varios | 2 | 26-04-2011 09:16:10 |
|