Para los que usan el Sistema Facturador SUNAT v1.5 (en adelante SFS), uno de nuestros clientes nos reportó un error particular que ocurria cuando intentaba realizar la firma de sus comprobantes electrónicos: content[0] is not a valid X509Data type.
El problema ocurre porque el SFS no ha importado correctamente el certificado digital, si nos fijamos en las configuraciones vamos a ver que nuestro certificado no está registrado.
Motivo del Problema
Todos los certificados digitales cuentan con un alias (identificador o nombre descriptivo) que por lo general es un código generado por la PC o también podría ser el nombre de la entidad (Persona Natural o Jurídica) para la cual fue emitido. El problema está, cuando el alias lleva espacios en blanco para poder verificar esto desde Internet Explorer vamos a: Opciones de Internet > Contenido > Certificados.
Como vemos uno de nuestros certificados digitales tiene el como alias o nombre descriptivo John Doe y por lo tanto tiene un espacio en blanco, y esta condición hace que el SFS tenga un bug (error) ya que al parecer no permite la importación de certificados digitales con un alias que contenga espacios en blanco.
Solución al Problema.
Lo más sencillo es solicitar al proveedor que cambie el alias del certificado, en caso que no puedas hacerlo te dejamos una guía de como podrías cambiar el alias de tu certificado, para esto debes tener bien configurado el JAVA_HOME, que de seguro ya lo tienes por tener el SFS lo siguiente es ejecutar la siguiente linea de comando desde el CMD de Windows.
>keytool -changealias -keystore c/ruta/al/pfx/certificado.pfx -alias "John Doe" -destalias "johndoe"
Como vemos, estamos indicando que el antiguo alias “John Doe” sea reemplazado por uno nuevo y sin espacios “johndoe”, luego de esto podemos importar nuevamente nuestro PFX en el SFS para intentar realizar la firma, con lo cual verificamos que el problema se termino :D.
¿Pero como paso todo esto?
Como mencionamos líneas arriba, este problema se origina por un bug del SFS v1.5 al momento de leer alias con espacios en blanco y bueno de la mano con nuestros amigos de Blobfish inspeccionamos el código del SFS y encontramos lo siguiente:
Al momento de importar el Certificado digital, exactamente en el método: pe.gob.sunat.servicio2.registro.service.BandejaDocumentosServiceImpl#importarCertificado nos percatamos de lo siguiente:
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 ****");
Al momento de importar el Certificado digital, exactamente en el método: pe.gob.sunat.servicio2.registro.service.BandejaDocumentosServiceImpl#importarCertificado nos percatamos de lo siguiente:
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 ****");
Y bueno de esta forma SUNAT podría solucionar el error en el SFS v1.5. Por ultimo si conoces a alguien de SUNAT no olvides compartirle este post para que nunca más nadie tenga este inconveniente.