miércoles, noviembre 16, 2005

Manipulación en Java de los CAF del SII

Cuando se desarrolla un sistema de emisión de DTEs en Java, uno de las primeras tareas es "procesar" el archivo XML de autorización de Folios que se descarga desde el SII, con la intención de recuperar la llave privada y llave pública del CAF. La llave privada se utiliza para firmar el timbre de todos los DTEs que utilizarán este rango de folios.
Para usar la llave privada que entrega el SII en Java, se debe hacer una transformacion sobre ella, dicha transformación se puede hacer con la herramienta OpenSSL:

http://gnuwin32.sourceforge.net/packages/openssl.htm (windows)
http://www.openssl.org (linux)

Se sugiere descargar e instalar la herramienta y utilizarla con el comando "pkcs8", que de acuerdo a la documentación:

http://www.openssl.org/docs/apps/pkcs8.html

Permite transformar una llave privada de formato tradicional a un formato pkcs8 que puede ser leido y manipulado con Java. A la ejecución del comando se debe dar como entrada la llave privada que entrega el SII (sólo la llave, la que se encuentra dentro de los tags ), aplicar la transformación y usar en Java la llave transformada. Esta transformación seria algo como:

openssl pkcs8 -in llaveSII.pem -topk8 -nocrypt -out llaveOK.pem

en donde llaveSII.pem es la llave que entrega el SII (lo que viene entre las lineas "-----BEGIN RSA PRIVATE KEY-----" y "-----END RSA PRIVATE KEY-----", incluidas estas lineas) y llaveOK.pem es el nombre del archivo que tendrá la llave transformada, y es la que debe usar con Java para crear el PrivateKey.

1 comentario:

Anónimo dijo...

buenas, una consulta.

que significa esto :

ERROR, durante la ejecucion ocurrio un problema: cl.sii.dte.TimbreException: EL CAF no corresponde a este timbre con stacktrace: [Ljava.lang.StackTraceElement;@1e893df

si existe alguna idea o comentario, por favor enviar un correo a:
Néstor Alvarado
nalvarado@autopro2000.cl

gracias