Últimamente he investigado sobre applets, swing y JNLP y ha resultado un tema muy interesante, ya que abarca conceptos de seguridad, diseño, arquitectura de cliente servidor, etc…
Como dato cultural: Java Web Start es un mecanismo desarrollado por SUN para ejecutar aplicaciones de contenido rico (swing y applets) a través del navegador web, esto se realiza por medio del JNLP que es un protocolo de comunicación que permite lanzar nuestras applicaciones desde un lugar remoto, anteriormente esto se podia manejar mediante applets pero.. por razones de seguridad se les negaba acceso a los recursos de la maquina, como carpetas de sistema, archivos, etc… ya que alguién puede manipularlo de forma incorrecta y robar información de los que ejecuten el código.
Sobre todo en la seguridad, encontre este enlace donde explican màs a detalle cuales son las restricciones de las aplicaciones (swing/applets):
http://www.chuidiang.com/chuwiki/index.php?title=Firmar_Applets
Pero bueno al grano, para poder hacer que nuestras aplicaciones ejecuten con toda su funcionalidad y sin restricciones debemos firmarlas, y claro!! que el usuario que lo ejecute, acepte esa firma, podemos hacerlo de la siguiente manera:
1. Generar la llave: Es el identificador que va a validar nuestra aplicación, yo encontre estas dos formas de hacerlo, la primera genera la llave por un tiempo determinado y la segunda la genera con vigencia de un año, puedes utilizar cualquiera. Abrimos una terminal y escribrimos:
#Comando para generar la llave con vigencia de un año
keytool -genkey -alias NOMBRE_LLAVE -validity 360 -v
#Genera la llave "MyKey" con la vigencia por un año (es el valor por defecto) y determina el algoritmo con RSA
keytool -genkey -alias MyKey -keyalg rssa
Nota: Para comprobar que el certificado se ha generado correctamente se puede comprobar con el siguiente comando, que listará todos los certificados que tenemos en nuestro keystore:
#Listar certificados en resumen
keytool --list
#Listar certificados a detalle
keytool –list -v
2. Exportar el certificado (OPCIONAL): Esto es se utiliza cuando tienes que proporcionar el certificado de seguridad , establece un contrato, un contrato con el navegador para asegurar el contenido que se esta descargando proviene de una fuente segura, si quieres que tu aplicación sea validada tienes que darle una copia del certificado al usuario que lo va a utilizar.
keytool -export -alias Mykey -file MyCert.crt
3. Comprimir tu applicación (OPCIONAL): Esto es para crear el archivo jar solamente si tienes tus classes en carpetas, pero como hoy todo mundo utiliza algún IDE no creo que sea necesario que hagas esto, solo busca donde se genero tu archivo y te pasas al siguiente punto para firmarlo
jar cvf file.jar main/
4. Firmar el jar: Aqui esta lo chido!!, en una terminal buscas tu jar y lo firmas con la llave que generaste:
jarsigner file.jar Mykey
5. Verificar la firma: Solo es para ver si realmente ya esta firmada nuestra aplicación.
jarsigner -verify -verbose -certs file.jar
Con esto nuestras applicaciones ya tienen permisos hasta para crear y modificar archivos en el cliente, claro solo si el usuario acepta ejecutarlos jaja :p.
Si deseas más información YO recomiendo que visites la documentación de java, realmente todo viene muy bien explicado ahí.
Saludos