certificado en formato distinto, ‘CER

 

certificado en formato distinto, ‘CER

La firma y el firmado


Me lo entregaron en formato PKCS#12, heredero del peor formato criptográfico de la historia. Para aumentar el estrés, SUNAT requiere el certificado en formato distinto, ‘CER’  Para nuestra salvación, Linux tiene el fabuloso comando openssl, que hace todo el trabajo feo por nosotros.
Primero, obtenemos los certificados desde el fichero PKCS#12 (en formato PEM, que es ASCII plano)
openssl pkcs12 -in CERTIFICADO_PKCS.pfx -nokeys -out solo_certificados.crt
Luego lo recodificamos a DER (¿no era CER? Puedes leer aquí para confundirte un poco más…):
openssl x509 -in solo_certificados.crt -outform der -out certificado.cer
Y listo.
A parte de convertir de formato, con openssl puedes sacar cada certificado y la llave privada del PKCS#12, y guardar cada uno en el formato PEM (entre otras docenas de cosas más. openssl es muy paja 😛)
En vez de usar las librerías de OpenSSL de PHP para firmar el documento (y ver otros temas relacionados, como la canonicalización), preferí usar XMLSec, y funcionó a la ferpección.


El siguiente programa hace refrencia a unos archivos de firma (.key.pem). Estos son los arhivos proporcionados por el SAT y llamados 'Certificados de Firma Digital', que son archivos hijos de los archivos de Firma Electronica Avanzada (FEA) pero se genera uno por cada localidad o sucursal que emite los Comprobantes Fiscales Digitales (CFD).
El 'problema' es que los archivos que proporciona el SAT estan en formato DER y PHP los requiere en formato PEM. En esta pagina explico los pasos que segui para convertir los archivos.
    • xsl
  • Servidor Windows/Linux
  • Certificados CSD en formato PEM
Para los que programan en VB o C# y utilizan los X509Certificate2, les recomiendo generar un archivo *.p12 a partir del *.cer y *.key Para crearlo aqui les dejo el link donde DADO explica como generarlos http://www.validacfd.com/phpbb3/viewtopic.php?f=5&t=553&p=8999&hilit=p12#p8999. Se supone que es para generar un *.pfx, pero se puede cambiar esa extensión a *.p12 

Y en este página encontre como crear el sello digital http://www.forosdelweb.com/f78/facturas-digitales-sat-mexico-c-803607/index2.htmlBusquen el post de MarkX. 



Gente, si ingresan a la URL que les mencione anteriormente podran ver una explicación detallada de como implementar: http://www.afip.gob.ar/ws/

Básicamente hay que implementar el webservice de Autenticación y Autorización WSAA y el webservice para Factura Electrónica WSFE.

Aquí un ejemplo de código PHP para implementar el WSAA: http://www.afip.gob.ar/ws/WSAA/ejemplos/wsaa-client-php.zip

Aquí el manual de WSFE actualizado(versión 2.6): http://www.afip.gob.ar/fe/documentos/manualdesarrolladorCOMPGv26.pdf

No se bién cual es la duda o problema que estan teniendo para implementar estos servicios, tal vez si se explican les pueda ayudar.

Saludos,
Fernando

Comentarios

Entradas populares de este blog

React Events

firmas digitales integradas en PDFs

fiel