Entradas

Mostrando entradas de mayo, 2025

🔐 Cuando nadie del equipo podía resolverlo…

Una empresa con un equipo de desarrollo Ruby necesitaba implementar un microservicio de firma electrónica para facturas del SII . Su arquitectura estaba basada en Ruby y Python. Para la firma, contrataron a un programador externo en Python . Pero pronto se toparon con una gran limitación: ni Ruby ni Python (en sus versiones actuales) soportaban el algoritmo RSAwithSHA1 , aún requerido por el SII. Intentaron downgradear librerías y entornos , pero fue un dolor de cabeza : incompatibilidades, errores de firma, validaciones fallidas… nada funcionó. El validador del SII simplemente rechazaba las firmas . Fue entonces cuando me contactaron. Yo también era externo , y ni siquiera estaba considerado en el proyecto original. Me encontraron por mis publicaciones, blogs y videos sobre factura electrónica. Finalmente, desarrollé un microservicio en Java , corriendo en Jetty, accesible solo desde localhost, que firmaba correctamente los XML y los validaba sin problemas ante el SII. El resto de...

Keystore en Java

🔐 Keystore en Java: La base para firmar facturas electrónicas Si estás trabajando en un sistema de facturación electrónica , especialmente en el contexto del SII en Chile , probablemente ya manejas archivos .pfx para firmar XMLs. En Java, este archivo no es otra cosa que un Keystore : un almacén seguro de claves y certificados. Pero, además, Java incluye todo lo necesario para firmar documentos digitalmente sin necesidad de bibliotecas externas. A continuación te explico qué es un Keystore, cómo se usa en la firma electrónica y cuándo necesitas (o no) usar Apache Santuario. 📦 ¿Qué es un Keystore? Un Keystore en Java es un archivo seguro que contiene certificados digitales, claves públicas y claves privadas. Es, en esencia, el equivalente al "almacén de certificados" que usan otros entornos, como Windows o navegadores web. En facturación electrónica, el archivo más común es el .pfx (formato PKCS#12), que contiene: 🔑 La clave privada del firmante 📜 E...