Hola de nuevo, Ricardo
Esperaba no tener que molestaros de nuevo, porque en mi PC todo funciona
perfectamente, pero al pasar todo a un entorno de pruebas real me he vuelto a
encontrar con el problema de las rutas absolutas y la verdad es que estoy algo
desesperado, por estar bloqueado tan cerca de la solución. Intento explicar el
problema desde cero para que no haya que leer ningún correo anterior
1.- Ahora mismo el applet funciona bien y está integrado con la aplicación que
lo va a usar. Para firmar en XAdES DigiDoc necesita los certificados de la CA
cliente, que se declaran en el archivo de configuración con una ruta absoluta
de este tipo (no encontré ninguna forma de hacerlo con rutas relativas):
DIGIDOC_CA_CERT1=C:\\PROYECTOS\\Gottax\\GottaX\\Aplicaciones\\Picos\\CryptoApplet\\SESCAM_Root_CA.cer
2.- Al configurar esa misma ruta para la máquina de pruebas, que es una
máquina Unix, intento definirlo así:
DIGIDOC_CA_CERT1=\\\\opt\\opt\\apache-tomcat-6.0.26\\webapps\\picos.desa\\Aplicaciones\\Picos\\CryptoApplet\\SESCAM_Root_CA.cer
Y el problema es que no hay manera de que el applet encuentre el certificado
con este tipo de ruta. ¿Puede ser porque necesite que las rutas absolutas
empiecen con una letra de unidad, como en Windows? ¿Habéis apuntado alguna vez
a certificados en una máquina Unix de esta manera?
Hay otro camino para resolver el problema, que tú mismo me indicaste en
correos anteriores, y es utilizar los certificados desde una keystore, lo que
evitaría el problema de las rutas. Tengo la keystore del cliente, pero si la
meto en el jar de configuración del applet (uji-config-2.1.1-signed.jar), el
applet queda manipulado y se invalida su propia firma, dándome el siguiente
error al verificar la integridad:
es.uji.security.crypto.timestamp.TokenVerifyException: Unable to decipher
pkcs#9 encoded attributes
at
es.uji.security.crypto.timestamp.TSResponseToken.verify(TSResponseToken.java:215)
at
es.uji.security.crypto.timestamp.TSResponseToken.verify(TSResponseToken.java:187)
at
es.uji.security.crypto.openxades.OpenXAdESSignatureFactory.formatSignature(OpenXAdESSignatureFactory.java:213)
at es.uji.security.ui.applet.SignatureThread.run(SignatureThread.java:452)
Probé, siguiendo tu sugerencia, a eliminar los ficheros "META-INF/UJI.SF" y
"META-INF/UJI.RSA" del jar firmado original, que en teoría era el único que no
necesitaba ir firmado, pero entonces el error es otro:
ERROR thread-sig-0 es.uji.security.ui.applet.SignatureThread [08:18:05,695] -
<html><font color='red'>No se ha podido calcular la firma</font></html>
java.security.AccessControlException: access denied
(java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPackageAccess(Unknown Source)
at sun.plugin2.applet.Applet2SecurityManager.checkPackageAccess(Unknown
Source)
at java.lang.ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.checkPackageAccess(Unknown Source)
at
es.uji.security.crypto.openxades.OpenXAdESSignatureFactory.formatSignature(OpenXAdESSignatureFactory.java:86)
at es.uji.security.ui.applet.SignatureThread.run(SignatureThread.java:452)
La pregunta clave: si os proporciono la keystore.ca del cliente y mi fichero
de configuración, ¿podríais generarme un "uji-config-2.1.1-signed.jar", con
estos ficheros en su interior pero firmado por vosotros, a ver si así pasaba
estos controles de seguridad? Sé que es mucho pedir, pero es la única solución
que se me ocurre para evitar el problema de las rutas...
Saludos y muchas gracias nuevamente: Javier Abínzano
_______________________________________________
CryptoApplet mailing list
[email protected]
http://llistes.uji.es/mailman/listinfo/cryptoapplet