por - ¿Qué significa la advertencia de seguridad del Applet de Java "El manifiesto del archivo JAR no contiene el atributo Permisos" significa?
missing permissions manifest attribute in main jar (4)
Tengo un Applet de Java que necesita acceso al sistema de archivos local del cliente. He creado un certificado simple para mí (NO está certificado por Verisign, Commodo, ...). Firmé el jar con la siguiente plantilla:
del /Users/koalabruder/.keystore
"C:/Program Files/Java/jdk1.7.0_45/bin/keytool" -genkey -alias %1 -keypass kp -dname "cn=inin" -storepass ab987c
"C:/Program Files/Java/jdk1.7.0_45/bin/jarsigner.exe" -storepass abc -keypass kp %2 %1
"C:/Program Files/Java/jdk1.7.0_45/bin/keytool" -export -storepass abc -alias %1 -file %3
La simple advertencia de seguridad de que no tengo "certificado firmado" existe desde hace años y no es mi problema.
Mi problema es que la advertencia de seguridad cambió debido a una de las últimas actualizaciones de Java:
Esta aplicación se bloqueará en una futura actualización de seguridad de Java porque el manifiesto del archivo JAR no contiene el atributo Permisos. Por favor, póngase en contacto con el editor para obtener más información.
Qué significa eso? ¿Cómo puedo arreglarlo? ¿Debo comprar un certificado? ¿Debo arreglar el Manifiesto (MANIFEST.MF)? ¿Cuál es el atributo de permiso?
Actualización: Aquí está mi Manifiesto del archivo jar
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Application-Name: inin
Permissions: all-permissions
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Name: net/inin/transfer/ul/UlPanel.class
SHA-256-Digest: asdfasddddddddddddddddddddddddddddddddd=
No necesita comprar un certificado, solo arregle el archivo de manifiesto.
Agregue esta línea:
permissions: all-permissions
O esta línea si solo necesita acceso limitado:
permissions: sandbox
En Netbeans noté que el archivo de manifiesto se genera durante la creación ... así que brevemente lo que he hecho para solucionar este problema incluye mis atributos de manifiesto dentro de esa plantilla, que es responsable de generar el manifiesto.
Para hacerlo, sigue estos pasos:
1- Abra este archivo con cualquier editor: (RUTA) / nbproject / jfx-impl.xml
(RUTA): es el camino de su proyecto.
2- Buscar: "// manifiesto". el mío se ve así:
// manifest
var man = jar.createManifest();
var a1val = project.getProperty("application.vendor");
var a1 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a1.setName("Implementation-Vendor");
a1.setValue(a1val);
man.addConfiguredAttribute(a1);
var a2val = project.getProperty("application.title");
var a2 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a2.setName("Implementation-Title");
a2.setValue(a2val);
man.addConfiguredAttribute(a2);
var a3 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a3.setName("Implementation-Version");
a3.setValue("1.0");
man.addConfiguredAttribute(a3);
//******insert your Attributes code here*******
jar.perform();
3- En "// * inserte sus Atributos aquí ** ", puede insertar su propio código de atributos de manifiesto, en mi situación es suficiente para incluir la base de código y los permisos ... también puede usar mi código:
...
//******insert your Attributes here*******
var a50 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a50.setName("permissions");
a50.setValue("all-permissions");
man.addConfiguredAttribute(a50);
var a51 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a51.setName("codebase");
a51.setValue("*");
man.addConfiguredAttribute(a51);
...
4- Luego construye y no volverás a ver esa advertencia.
Algunas notas:
Recomiendo consultar la documentación de atributos de manifiesto que se relaciona con la seguridad @ http://docs.oracle.com/javase/tutorial/deployment/jar/secman.html
no use el comodín "*" en la base de código, y será mejor usar https en lugar de http por seguridad :-) Lo estoy usando solo para desarrollar.
buena suerte,''.
Me encontré con el mismo problema y cambiar mi manifiesto no lo solucionó.
Finalmente descubrí que hacía referencia a una biblioteca que venía en su propio contenedor con su propio manifiesto. Estaba usando una copia de ese archivo jar que no tenía permisos ni una base de código.
Por lo tanto, si hace referencia a cualquier biblioteca, excepto a la biblioteca del sistema JRE, verifique el manifiesto en el archivo jar (p. Ej., Abriéndolo con 7zip). Si no contiene los atributos, puede:
- verificar, si el fabricante tiene una nueva versión. Él podría haber notado el problema por ahora.
- Descomprime el archivo jar, edita el manifiesto y jar de nuevo, o
- Fusiona la biblioteca con tu propio jar.
Para los dos últimos, verifique la licencia bajo la cual se publica la biblioteca. Quizás no puedas manipular el producto de esta manera.
He cumplido con esta advertencia al actualizar la firma en un applet preexistente (un componente que interactúa con una tarjeta inteligente de usuario, y para que funcione correctamente debe firmarse con un certificado "fuerte").
Agregar también el atributo de base de código, por ejemplo: "Codebase: xyz.com" hace que la advertencia desaparezca (tenga en cuenta que el texto de advertencia original hacía referencia, como en este caso, a problemas relacionados con el atributo "Permiso" y no con el código base). .).
Probablemente es un error en la jre?