Hola a todos!!
Hace unos dias empeze con el desarrollo de un sistema que permite la firma de comprobantes fiscales,en UNIX/PROGRESS, estuve leyendo sus comentarios, cuando estaba buscando información al respecto. Bueno sin más nada mas comentarles que el proceso que han estado siguiendo esta erroneo en un paso, que ha pasado ser despercibido, y es algo por lo que veo han batallado
Bueno explico donde fue el mal paso
, es cuando hacen el primer MD5, si leyeron bien primer md5, por que? simple el openssl por default tiene el algoritmo MD5 para su utilización, por lo tanto cuando hacen:
openssl> dgst -md5 -out md5.txt cadenaoriginal.txt
openssl> dgst -sign key.pem -out sello.txt md5.txt
Lo que sucede es que hacen nuevamente un MD5 al archivo MD5.txt, por lo tanto el sello generado es invalido en el SAT. Por default el comando dgst tiene como parametro -md5 como predeterminado entonces al firmarlo, no firma el md5.txt si no al nuevo md5 generado.
Por lo tanto para solucionar este problema deben hacer lo siguiente:
openssl>dgst -md5 -sign key.pem -out firma.txt cadenaoriginal.txt
openssl>enc -base64 -A -in firma.txt -out sello.txt
Con esto obtienen el sello valido
Espero que les ayude a los que no lo han conseguido
Saludos y felices códigos
Atte:
Manuel Esquivel (pero en el bajo mundo me dicen
ikari84 :-p)
PD: Todo lo programe desde UNIX SCO OpenServer Release 5/PROGRESS 8.2 A/openssl 0.9.7i