Error al procesar el pdf retornado, anexo capturas de pantalla de operativa - Foro de Consultas - Seguridad
Foros de consultas y discusión
Error al procesar el pdf retornado, anexo capturas de pantalla de operativa
Marcelo Sanchez, modificado hace 7 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
00
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());
}
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());
}
Archivos adjuntos:
Marcelo Sanchez, modificado hace 7 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
00
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());
}
--------------------------------------------
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 7 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
00
¿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
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
Marcelo Sanchez, modificado hace 7 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
00
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 .
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 7 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
00
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
Saludos