Foros de consultas y discusión

angle-left Atrás

Error al procesar el pdf retornado, anexo capturas de pantalla de operativa

MS
Marcelo Sanchez, modificado hace 3 Años.

Error al procesar el pdf retornado, anexo capturas de pantalla de operativa

Youngling Mensajes: 4 Fecha de incorporación: 24/11/16 Mensajes recientes
Tengo un problema en el entorno de test, en el retorno a mi plataforma. 


Tengo implementado el cliente para el envio del pdf seleccionado de mi lado (cliente)

Ese documento llega correctamente a la plataforma de firma

Dentro de la plataforma se realiza la firma con la Cedula de Identidad correctamente (se puede bajar el documento firmado y se valida que este anexado al documento original la firma de la cedula utilizada)

Cuando intento el retorno a mi app web me esta cancelando


Segun su diagrama que anexo
           dss-flujo1 (Firma).png  
paso 11)

----------------------------------------------------------------------------------------

De nuestro lado esta ingresado el certificado de Coesys correctamente y estamos usando un certificado autofirmado para el envio que les fue enviado y al acceder a su plataforma 
estamos comunicandonos correctamente 

----------------------------------------------------------------------------------------

el error que nos esta dando es 

16:21:55,772 ERROR [stderr] (ajp-/0.0.0.0:8009-17) 
                session nl9hC1cQNdgjFRDnSg6aCuHX.HostPreApp01:preapp01 
                                    Exception exResponse -- signResponseBase64 = request.getParameterValues("SignResponse")[0];
                                                                    com.gemalto.ics.rnd.egov.dss.sdk.exception.ResponseVerifierException:
                                                                    sun.security.provider.certpath.SunCertPathBuilderException:
                                                                                          unable to find valid certification path to requested target

----------------------------------------------------------------------------------------
El texto 

                     "Exception exResponse -- signResponseBase64 = request.getParameterValues("SignResponse")[0];"
corresponde a nuestro debug dentro de la app el resto es el texto asociado a la cancelacion 

----------------------------------------------------------------------------------------

a nivel de codigo lo que estamos haciendo es 


            Security.addProvider(new BouncyCastleProvider());
            InputStream ts = new FileInputStream(trustStoreFile);

            JCAKeyStoreTrustStore trustStore= new JCAKeyStoreTrustStore(trustStoreProvider,trustStoreKeystoretype,ts,trustStoreAlias,trustStorePassword);

            ResponseParser responseParser = DefaultResponseParserFactory.getResponseParser(trustStore, null);    

            try {
            String signResponseBase64 = request.getParameterValues("SignResponse")[0];

             ....
 
                }catch (Exception exResponse){

System.err.println("session " + session.getId() + " Exception exResponse -- signResponseBase64 = request.getParameterValues(\"SignResponse\")[0];  "  + exResponse.getMessage());              
​​​​​​​                                              
                }
   
MS
Marcelo Sanchez, modificado hace 3 Años.

RE: Error al procesar el pdf retornado, anexo capturas de pantalla de opera

Youngling Mensajes: 4 Fecha de incorporación: 24/11/16 Mensajes recientes
​​​​​​​el error se produce dentro de este bloque 

--------------------------------------------
            try {
            String signResponseBase64 = request.getParameterValues("SignResponse")[0];
            
                try {        
                    String responseDocument = new String(Base64.decodeBase64(signResponseBase64));
                    DSSResult result = responseParser.parseAndGetResult(responseDocument);

                    if (result instanceof DSSResultSuccess) {

                        response.setContentType(trustStoreContentType);                          

                        //resultModel.setData(((DSSResultSuccess) result).getDocumentData());

                        InputStream in = new ByteArrayInputStream(  (byte[]) ((DSSResultSuccess) result).getDocumentData());

                        try {
                            IOUtils.copy(in, response.getOutputStream());
                        } finally {
                            IOUtils.closeQuietly(in);
                        }                
                    }

                }catch (Exception exResponse){
System.err.println("session " + session.getId() + " Exception exResponse -- signResponseBase64 = request.getParameterValues(\"SignResponse\")[0];  "  + exResponse.getMessage());                                                             
                }
            }catch (Exception exc){
System.err.println("session " + " Exception exc "  + exc.getMessage());                                                             
            }     
Nicolas Piquerez, modificado hace 3 Años.

RE: Error al procesar el pdf retornado, anexo capturas de pantalla de opera

Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
¿Como andas Marcelo?
Podes identificar en que línea exactamente te falla la aplicación?
Porque la excpeción que te da:
com.gemalto.ics.rnd.egov.dss.sdk.exception.ResponseVerifierException:
                                                                    sun.security.provider.certpath.SunCertPathBuilderException:
                                                                                          unable to find valid certification path to requested target

Esta relacionada con la validación de la firma del mensaje, pero en donde indicas que salta el error no parece que se realice dicha verificación (Solo me da a sospechar la función responseParser.parseAndGetResult(responseDocument) ). Yo voy a intentar fijarme en la documentación si esa función valida la firma del documento, otro problema puede ser con la liberia del bouncy castle, yo tuve que instalarla en la maquina virtual de java para que me funcione, debido a que es una biblioteca de seguridad un poco critica no basta con incluirla en las dependencias únicamente. Te dejo instrucciones para instalarla:

INSTALAR BOUNCY CASTLE EN JAVA

Se debe de tener instalado el provider Bouncy Castle para la Java Cryptography Extension and the Java Cryptography Architecture. Esto tanto para la JDK como la jre (dependiendo el sistema pueden estar separadas)

Ir al sitio de BouncyCastle y buscar la libreria adecuada para JDK, en este caso v1.56 (descargar aquí)/
Ir a directorio de JDK/jre
Buscar el archivo de propiedades de seguridad situado en    $JAVA_HOME/jre/lib/security/java.security
Agregar linea al final con:
security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider

Donde N es uno mas que el último numero de la lista

Agregar libreria a /lib/ext 



Saludos
MS
Marcelo Sanchez, modificado hace 3 Años.

RE: Error al procesar el pdf retornado, anexo capturas de pantalla de opera

Youngling Mensajes: 4 Fecha de incorporación: 24/11/16 Mensajes recientes
Tenias razón cae en
 
        DSSResult result = responseParser.parseAndGetResult(responseDocument); 
 
 
Esto es el mensaje donde se produce
 
10:13:23,247 ERROR [stderr] (ajp-/0.0.0.0:8009-28) session a05i5r37N98MsxDPwaiZ9F+m.HostPreApp01:preapp01 Exception exResponse -- DSSResult result = responseParser.parseAndGetResult(responseDocument);  com.gemalto.ics.rnd.egov.dss.sdk.exception.ResponseVerifierException: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Si tenes alguna infomacion sobre ese error especifico te lo agradesco porque si es algo que se puede resolver a nivel de la aplicación nos resulta mejor
antes de meter mas cambios a nivel de la configuración de los security providers de java .
Nicolas Piquerez, modificado hace 3 Años.

RE: Error al procesar el pdf retornado, anexo capturas de pantalla de opera

Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
Tiene toda la pinta de ser un tema de usar el certificado correcto. Pasame luego que trustore están usando y chequeamos que este todo en orden.

Saludos