viernes, 18 de octubre de 2013

Problemas para Forms 11g en próximas actualizaciones de Java

Al actualizar a la última actualización de Java 7, el parche 45 (1.7.0_45), al mostrar la advertencia de seguridad sobre los JAR firmados acompaña el siguiente texto: "Esta aplicación estará bloqueada en una futura actualización de seguridad de Java porque el archivo MANIFEST de JAR no contiene el atributo de permisos. Póngase en contacto con el publicador para obtener más información".


¿Qué significa esto?, pues que a partir de ahora y cuando Oracle quiera, sacará una actualización de Java (no necesariamente en el próximo parche) que dejará a nuestros Forms KO.

Ya hace unos cuantos parches que en la consola de Java ya lo estaba advirtiendo al cargar los archivos, pero la mayoría hizo caso omiso a ello.

Los archivos JAR dentro de la carpeta META-INF tienen que tener el archivo MANIFEST.MF con las siguientes líneas (puede haber más):

Codebase: *
Permissions: all-permissions

¿Cómo solucionarlo?, en mi caso tengo 3 tipo de JARS, los propios de Oracle, JARS propios y JARS de terceros.

  • Los propios de Oracle (frmall.jar, frmgeneric_laf.jar, frmmain.jar, frmoracle_laf.jar, frmresources.jar, frmwebutil.jar): Para estos Oracle ha publicado un parche que incluye el MANIFEST correcto, el parche es el 16837591 que se puede bajar del Metalink. Si no tienes acceso al Metalink puedes hacer lo mismo que explico con JARS de terceros.
  • JARS Propios. Estos los voy a dividir en 2 grupos (los de iconos y los generados con JDeveloper).
    • Iconos: Creamos un archivo MANIFEST.TXT en cualquier ubicación de nuestro disco, por ejemplo, C:\Temp\MANIFEST.TXT con el siguiente contenido:
Manifest-Version: 1.0
Codebase: * 
Created-By: 1.6.0_35 (Sun Microsystems Inc.)
Permissions: all-permissions
      • Generar el archivo JAR con el siguiente comando (suponemos que los iconos están en C:\Temp\iconos): jar cvfm c:\temp\archivoiconos.jar c:\MANIFEST.TXT C:\temp\iconos\*.gif

    • Jars desplegados con JDeveloper. Creamos un archivo dentro del proyecto de JDeveloper de texto plano con el siguiente contenido (NOTA: Hay que dejar un retorno de carro al final para que al hacer el despliegue meta las 2 líneas):
Codebase: *
Permissions: all-permissions
        • Al configurar el despliegue del archivo JAR, marcamos la check "Include Manifest File (META-INF/MANIFEST.MF) he indicamos en "Additional Manifest Files to Merge into MANIFEST.MF" la ruta al archivo que hemos creado anteriormente.

  • JARS de Terceros: Lo que hice en este caso, es descomprimirlos, modificar el MANIFEST.MF, borrar la firma que estaba en la carpeta META-INF, volver a comprimirlos en formato ZIP y luego cambiar la extensión a ".jar". Luego los volví a firmar con mi certificado de firma de código.

Una vez tenemos los JAR con el MANIFEST correcto y perfectamente firmados, los volvemos a colocar en $ORACLE_HOME/forms/java y reiniciamos el servicio de WLS_FORMS:

$DOMAIN_HOME/bin/stopManagedWebLogic.sh WLS_FORMS
$DOMAIN_HOME/bin/startManagedWebLogic.sh WLS_FORMS&

13 comentarios:

Paulino González dijo...

Gracias por la información.
El parche que dejas en el enlace, ¿sirve para la versión de Forms 11g en Windows? (en las instrucciones parece que es para linux).


sailefm dijo...

Hola:

El parche es "Generic" por lo tanto vale para cualquier plataforma, ya que realmente lo único que parchea son los jar que ejecuta el navegador Web donde se ejecuta la aplicación y eso es independiente del sistema operativo.

He tenido que retirar el enlace al parche ya que incumplía el EULA del mismo y no quiero tener problemas con Oracle. La alternativa es hacer lo mismo que comento de hacer con los JAR de terceros.

Saludos,

Paulino González dijo...

Gracias. Lo intentaré un día de estos.
Por cierto, yo también formé parte de esa "gran familia" de EDISA, desde prácticamente su origen hasta el año 1997 (o 1998?). Te conozco de esa época, y sigo tu interesante blog, en el que siempre aprendo algo interesante.
Un saludo

mcalons dijo...

El problema es que hay que contratar un CA, certificado de autoridad con Verisign o Thawte para tus scripts propios o de terceros que no estén registrados debidamente.

Y valen una pasta al año, de 300 a 500 dolares

Si alguien conoce una alternativa que lo comente, gracias

alex reyes dijo...

Hola Sailefm!
Buen aporte... ya que hace una semana java actualizó su versión y me arroja más alerts en la ejecución de mi applet.

La pregunta es: Esta solución también puede aplicar en Applets ? ya que es ese ahorita mi detalle.

No manejo JDeveloper, manejo NetBeans.

Sabes alguna solución?

NB no me da alguna opción de agregar otro Manifest

sailefm dijo...

Tengo varios pendientes de responder.

Voy a empezar por saludar a Paulino, que todavía la aplicación con la que trabajo ejecuta código nacido de sus manos ;-)

El precio en GoDaddy por 3 años es sobre 500$.

No conozco NetBeans, pero lo único que hay que hacer es que el JAR tenga en el META-INF un MANIFEST.MF con esas entradas y luego firmarse, seguramente hay forma que al hacer el despliegue del Jar añada ese MANIFEST.

Saludos,

Alejo dijo...

Cordial saludo...

Me encuentro desarrollando una aplicacion java web star y tengo el problema de la advertencia que la aplicación no es confiable. he seguido algunos de tus pasos para las modificaciones pero no me han funcionado yo uso netBeans para desarrollar... te cuento yo genero un .jar el cual firmo y tengo una carpeta con mas .jar (es la lib), cuando compilo todo queda firmado pero lanzo la aplicación y me sigue saliendo la advertencia... como puedo agregar el manifiesto de una forma correcta...

gracias

..::::♥ Jessica ♥::::.. dijo...

Hola tengo un problema y pienso que puede ser referente a lo que expones en este post.
Bien necesito entrar a una pagina la cual al cargar una seccion me meciona el siguente error:

Missing Application-Name manifest attribute for: https://www.paginaweb.mx/applet/AppletFIEL.jar

Esta aplicacion no la desarrolle, es externa, pero necesito accesar a ella, por lo tanto la pregunta es...

Puedo solucionar el problema? aun que no sea mi aplicacion

o tengo que ponerme en contacto con los desarrolladores?

Que puedo hacer?

Te agradeceria mucho tu informacion.

sailefm dijo...

Hola:

Un archivo jar no es más que un zip con el código que puedes descomprimir, modificar el MANIFEST.MF volverlo a comprimir en zip y darle extensión jar. El problema es con la firma, si el jar estaba firmado la firma se invalida, con lo que tienes que volver a firmarlo para poder desplegarlo en el applet.

Lo ideal es que sean los desarrolladores quienes lo hagan.

Saludos,

Alfonso Ángel Alcázar Espín dijo...
Este comentario ha sido eliminado por el autor.
Alfonso Ángel Alcázar Espín dijo...
Este comentario ha sido eliminado por el autor.
Alfonso Ángel Alcázar Espín dijo...

Hola.

Soy un Profesor que se quiere presentar para candidato de unas plazas de profesor bilingue.

Tengo que hacer una teletramitacion de la junta de andalucia y me sale "sta aplicación estará bloqueada en una futura actualización de seguridad de Java porque el archivo MANIFEST de JAR no contiene el atributo de permisos. Póngase en contacto con el publicador para obtener más información. Más información"

¿hay alguna forma de que lo pueda solucionar con mi nivel de informatica de usuario?

sailefm dijo...

Hola:

He publicado un post explicando como añadir una excepción: http://oracleforms.blogspot.com.es/2014/01/conexion-webs-con-applets-de-java-sin.html

Saludos,