java jar signed-applet

java - ¿Por qué debería firmar mis archivos JAR?



signed-applet (4)

En términos de applets: a partir de 6u10, Sun JRE reemplaza el cartel de advertencia con un triángulo de advertencia menos molesto (desde 6u12, IIRC) (necesario para admitir ventanas con formas y transparentes). 6u10 también permite el acceso controlado a archivos a través de la API de servicios JNLP.

El principio de privilegio mínimo dice que no debe firmar las clases de sus archivos jar. La seguridad no es necesariamente fácil.

Simplemente mostrar un cuadro de diálogo de certificado no debe interpretarse en el sentido de que se debe confiar en el contenido completo de una página web.

¿Por qué debería firmar mis archivos JAR?

Sé que tengo que firmar mis archivos JAR del lado del cliente (que contienen Applets) para que se puedan hacer cosas especiales, como el acceso al sistema de archivos, y para que el molesto bit en la parte inferior de Windows no se muestre, pero ¿por qué? ¿Y necesito firmar mis archivos JAR del lado del servidor que contienen servlets, etc.?

Se agradecerán algunas reglas básicas para cuándo y cuándo no firmar los JAR. ¡Gracias!


La firma de un archivo jar, al igual que el uso de certificados en otros contextos, se realiza para que las personas que lo usan sepan de dónde proviene. La gente puede confiar en que Chris Carruthers no va a escribir código malicioso, por lo que están dispuestos a permitir que su applet acceda a su sistema de archivos. La firma les da cierta garantía de que el frasco realmente fue creado por ti, y no por un impostor o alguien en quien no confían.

En el caso de jarras de servidor o biblioteca, generalmente no hay necesidad de proporcionar ese tipo de garantía a nadie. Si es su servidor, entonces sabe qué jarras está usando y de dónde vienen, y probablemente confíe en que su propio código no sea malicioso.


La respuesta corta: no, a menos que la política de su compañía lo obligue a hacerlo.

La respuesta larga
Firmar frascos le dice efectivamente a su cliente: "Hice esto, y le garantizo que no estropeará su sistema. Si lo hace, acéptelo para vengarse". Esta es la razón por la que los archivos jar firmados en la solución del cliente implementados desde servidores remotos (applets / webstart) gozan de mayores privilegios que las soluciones no firmadas.

En soluciones del lado del servidor, donde no tiene que aplacar las demandas de seguridad de JVM, esta garantía es solo para la tranquilidad de su cliente.
Lo malo de los frascos firmados es que cargan más lento que los frascos sin firmar. Cuanto mas lento? está vinculado a la CPU, pero noté un aumento de más del 100% en el tiempo de carga. Además, los parches son más difíciles (tiene que volver a firmar el contenedor), los parches de clase son imposibles (todas las clases en un solo paquete deben tener la misma fuente de firma) y dividir tarros se convierte en una tarea rutinaria. Sin mencionar que tu proceso de construcción es más largo, y que los certificados apropiados cuestan dinero (el autofirmado es casi inútil).

Por lo tanto, a menos que la política de su compañía lo obligue a hacerlo, no firme frascos en el servidor y mantenga frascos comunes en las versiones firmadas y no firmadas (firmadas van a la implementación del lado del cliente, no firmadas van a la base del código del lado del servidor )


Una buena razón podría ser si nunca quisiste que nadie pueda colarse en las clases modificadas para ser llamado por tu código.

Lamentablemente, eso incluye a ti mismo :-D Así que esto solo debe hacerse si realmente lo necesitas. Compruebe el concepto de "jar sellado".