Troubleshooting
Al enviar a la DGI con más de un certificado dentro de un mismo proceso se presenta el siguiente error:
AxisFault: Reason: Error during Signature: StackTrace: org.apache.axis2.AxisFault: Error during Signature: at
org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:67) at
org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72) at
org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340) at org.apache.axis2.engine.Phase.invoke(Phase.java:313) at
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262) at
org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:427) at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at
uy.gub.dgi.WS_eFacturaStub.eFACRECEPCIONREPORTE(WS_eFacturaStub.java:215) at
uy.gub.dgi.gx.DGIEfactura.executeEFACRECEPCIONREPORTE(DGIEfactura.java:320) at
uy.gub.dgi.gx.DGIEfactura.ExecuteDGIWS(DGIEfactura.java:205) at
uy.gub.dgi.gx.DGIEfactura.EFACRECEPCIONREPORTE(DGIEfactura.java:141) at
uy.dgi.ws.PXToolsDGIWSWrapper.EFACRECEPCIONREPORTE(PXToolsDGIWSWrapper.java:62) at
com.xxx.conectordgi.SdtDGIWS.efacrecepcionreporte(SdtDGIWS.java:71) at
com.xxx.conectordgi.envioreporte.privateExecute(envioreporte.java:78) at
com.xxx.conectordgi.envioreporte.execute_int(envioreporte.java:54) at
com.xxx.conectordgi.envioreporte.execute(envioreporte.java:43) at
com.xxx.conectordgi.reportesobresdgi.privateExecute(reportesobresdgi.java:215) at
com.xxx.conectordgi.reportesobresdgi.execute_int(reportesobresdgi.java:64) at
com.xxx.conectordgi.reportesobresdgi.execute(reportesobresdgi.java:49) ...
Caused by: org.apache.ws.security.WSSecurityException: General security error (No certificates for user xx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx were found for signature) at
org.apache.ws.security.message.WSSecSignature.prepare(WSSecSignature.java:316) at
org.apache.ws.security.message.WSSecSignature.build(WSSecSignature.java:759) at
org.apache.ws.security.action.SignatureAction.execute(SignatureAction.java:65) ... 28 more
Se presenta este caso cuando:
Se están generando envíos a DGI de sobres de distintos emisores en procesos batch en donde se pueden juntar documentos de distintos emisores.
Se están generando envíos a DGI de reportes diarios. Este caso es el más común y es el ejemplo de invocación reportado anteriormente.
Según lo que investigamos Axis2 mantiene la referencia al jks que se hace en la primera firma del SOAP y cuando intenta buscar el siguiente certificado no cambia al otro archivo jks referenciado.
La forma de resolver este inconveniente es guardando todos los certificados digitales en el mismo Java Key Store.
De esta forma no se generan problemas en el proceso de firmado para el SOAP.