informazioni su: Ariel Techiouba

martedì 1 febbraio 2011

Come creare una Applet "signed"

Anzitutto perchè occore "firmare" una applet?

Le applet vengono eseguite in un contesto particolare di sicurezza (sandbox) per cui non possano causare "danni" volontari o meno all'utente che le esegue nel proprio browser.

Una applet è una classe java che estende l'oggetto java.apple.Applet e ne sovraccarica alcuni metodi (tipicamente: init, start, stop, destroy e paint).
Di default è sottoposta a restrizioni e si dice che è una applet "unsigned" (non firmata). Alcune delle restrizioni sono le seguenti:

  • può "parlare" solo con il server su cui è collocata: non può comunicare con altri!
  • Non può leggere file dal server se questi sono oltre un certo livello di gerarchia di cartelle (sopra il padre per esempio)
  • Non può accedere nè in lettura nè in scrittura ai file della macchina locale che la esegue nel browser
Ci sono anche altre limitazioni per le quali vi invito a leggere questa ottima guida riassuntiva:

Tali restrizioni non sono applicate ad una Applet SIGNED (firmata). Vediamo quindi come firmare la nostra.


PREREQUISITI:

Per eseguire questo tutorial è necessario disporre delle seguenti cose:
  • Java installato e configurato correttamente (Nel mio esempio ho la JDK 1.6, ma vanno bene anche le precedenti)
  • Eclipse J2EE

Ecco un riassunto degli step da compiere:
  1. Esportare la applet in un file jar
  2. Creare un file "keystore" per associare una chiave privata al jar tramite keytool
  3. Firmare il file jar con il tool jarsigner e creare il certificato
  4. Creare la pagina html con i giusti riferimenti per utilizzare il jar firmato


1 -  Esportare la applet in un file jar

Ho utilizzato Eclipse (versione 3.2 Helios J2EE) per questa operazione, ma java fornisce già un tool per fare tutto da console. In Eclipse è sufficiente cliccare il destro sul package che contiene la applet e scegliere "Export > jar".
Indicare il file e il percorso dove vogliamo creare il jar e lasciare le altre opzioni di default

In questo esempio la mia applet si chiama "SimpleWSApplet" ed è contenuta nel package "wstest"
Ho esportato quindi la classe nel file "wstest.jar" sul desktop.


2 - Creare un file "keystore" per associare una chiave privata al jar tramite keytool

Aprire il terminale (su Windows: "Start > Esegui > cmd") e portarsi nella cartella che contiene il jar da associare alla chiave. Nel mio esempio: "cd Desktop"

Eseguire keytool. Nel mio caso, dato che Java è installato nella cartella "C:\java\jdk1.6.0_23" ho usato il seguente comando:
C:\java\jdk1.6.0_23\bin\keytool.exe -genkey -alias www.mio_sito_web.it -keyalg RSA -keystore .\nome_file_keystore.jks

Nella procedura guidata, è importante che associate il sito web usato nell'alias e che utilizziate lo stesso nel prossimo step.
Gli altri dettagli sono a vostra discrezione e compariranno nel certificato.

Verrà creato il file "nome_file_keystore.jks" sul Desktop.


3 - Firmare il file jar con il tool jarsigner e creare il certificato

Eseguire jarsigner. Nell'esempio ho usato i seguenti parametri per il comando:
C:\java\jdk1.6.0_23\bin\jarsigner.exe -keystore .\nome_file_keystore.jks .\wstest.jar www.mio_sito_web.it

Verrà modificato il file wstest.jar, firmandolo ed associandoci un certificato con una certa validità.


4 - Creare la pagina html con i giusti riferimenti per utilizzare il jar firmato

Apriamo notepad e creiamo la pagina per testare il nostro jar firmato. Il codice che ho usato è il seguente:
<html>
<head>
<title>Signed Applet Test</title>
</head>
<body>
<p>Test di una applet firmata</p>
<br />
<applet width="400" height="400" code="wstest.SimpleWSApplet.class" archive="wstest.jar>Applet not supported in your browser</applet>
</body>
</html>

Salviamo il file come "prova_applet.html" nella stessa cartella che contiene il jar e apriamolo in un browser.

Ci viene rischiesto di accettare il certificato per permettere alla applet di funzionare.

That's all folks..

Nessun commento:

Posta un commento

Grazie per aver aggiunto un commento su questo blog..