Problema con el certificado digital en Facturador SUNAT v1.5

Después de haber importado un certificado digital en el Facturador SUNAT v1.5 y al intentar generar un comprobante se podría obtener un error como el siguiente:

content[0] is not a valid X509Data type

En cuyo caso es posible que se deba a que la entrada de la clave en el PFX importado tiene un nombre que incluye espacios, como se muestra en el ejemplo a continuación, donde la entrada de clave posee el nombre “juan carlos perez diaz”:

>keytool -list -keystore certificado.pfx
...
juan carlos perez diaz, Jul 22, 2017, PrivateKeyEntry,
Certificate fingerprint (SHA1): D7:5C:99:FC:CE:00:90:D8:02:21:56:40:D5:A5:8E:7C:D7:55:1D:BC

Y esta condición explota un “bug” en el Facturador SUNAT v1.5, que no está soportando apropiadamente las entradas con espacios en su nombre.

De cualquier manera, un sencillo “workaround” consiste en reemplazar aquel nombre por uno que no contenga espacios, para nuestro ejemplo esto se obtendría con el siguiente comando:

>keytool -changealias -keystore certificado.pfx -alias "juan carlos perez diaz" -destalias "juancarlosperezdiaz"

Después de lo cual se debería importar el certificado nuevamente al Facturador SUNAT y volver a generar el comprobante.

Como mencioné anteriormente, esto se debe a un “bug” en la aplicación Facturador SUNAT y si resulta de interés para alguno, el problema se encuentra en el siguiente método, pe.gob.sunat.servicio2.registro.service.BandejaDocumentosServiceImpl#importarCertificado, específicamente donde se resalta a continuación:

salida = FacturadorUtil.executeCommand("keytool -importkeystore -srcalias " + aliasPfx + " -srckeystore " + rutaCertificado + " -srcstoretype pkcs12 -srcstorepass " + passPrivateKey + " -destkeystore " + this.comunesService.obtenerRutaTrabajo("ALMC") + "FacturadorKey.jks -deststoretype JKS -destalias certContribuyente -deststorepass **********");

Cuya solución (rápida pero lejos de lo ideal) podría ser envolver el valor de la variable aliasPfx en comillas dobles como se muestra a continuación:

salida = FacturadorUtil.executeCommand("keytool -importkeystore -srcalias \"" + aliasPfx + "\" -srckeystore " + rutaCertificado + " -srcstoretype pkcs12 -srcstorepass " + passPrivateKey + " -destkeystore " + this.comunesService.obtenerRutaTrabajo("ALMC") + "FacturadorKey.jks -deststoretype JKS -destalias certContribuyente -deststorepass **********");

Por último, me gustaría comunicar esta incidencia a SUNAT para que lo solucionen de su lado, pero no conozco el canal correcto de reporte de incidencias a SUNAT, por lo que agradecería aquella información.

Leave a Reply

Your email address will not be published. Required fields are marked *