18
mpEntity.addPart("cro", new StringBody("4453764"));
19
20
httppost.setEntity(mpEntity);
21
La te nologia Java Web Start
Uno tragli aspetti fondamentalinella realizzazione di progetti software è quello
he riguarda la strategia di vendita. A anto alla lassi a distribuzione su
sup-portosi o (CDoDVD),staprendendosemprepiùpiede, olpassaredeglianni,
la vendita di software tramite Internet, attraverso il download di le
d'installa-zione. Questo ambiamentoè stato determinato dalnumero sempre maggioredi
prodottidisponibiliediproduttori,maan he dauna questionediopportunità: i
osti di distribuzionesono notevolmenteinferiori e si può raggiungere un ba ino
d'utenza de isamentepiù ampio.
Inquesto s enariosiinseris elastrategiapensataperla ommer ializzazionedel
software realizzato nel mio progetto: Java Web Start. Tramite questo
omo-do strumento è possibile s ari are il programma dal Web ed eliminare le noiose
pro edure di installazione ed aggiornamento, on la ertezza di eseguire sempre
l'ultimarelease disponibiledelprogramma.
Java Web Start 1
(nota an he ome JavaWS o JWS) è una te nologia di
distribuzionedi appli azioni sviluppata dalla Sun Mi rosystems (ora rilevata da
Ora le), he onsente all'utentedi s ari are ed avviare appli ativi software Java
direttamentedaunweb server,quindiavvalendosiditresolistrumenti: una
ma - hina on installata la piattaforma Java SE, una onnessione ad internet ed un
web browser. Con Java Web Start è possibile s ari are ed avviare
un'appli a-zione senza dover eseguire le lassi he (e noiose) pro edure di installazione. Il
software JavaWeb Startsiavviaautomati amentequando vienes ari ataperla
primavoltaun'appli azione he fa iauso dellate nologia JWS;JavaWeb Start
si o upa dimemorizzare lo almente(nella a he)l'interaappli azione: ogni
ul-1
teriore avvio avviene in modo presso hé immediato, dal momento he tutte le
risorse ne essarie sono già disponibili sulla propria ma hina. Inoltre ogni volta
he si avvial'appli ativo,il omponentesoftware JavaWeb Start ontrollailsito
Web dell'appli azione per veri are se è disponibile una nuova versione e, in tal
aso, las ari a e l'avvia automati amente.
Dalpuntodivistadelleopportunità,JavaWebStartpresentaunbuonnumero
di aratteristi he he lorendono parti olarmenteinteressanteperladistribuzione
delle appli azioni. Infatti:
•
èrealizzatopereseguire es lusivamenteappli azionis ritteperla piattafor-maJavaSE.Unasingolaappli azionepuò osìesseredisponibilesuunWebserver epoidistribuita su un ampio ventaglio di piattaforme: daWindows
aLinux,da Ma a Solaris;
•
supporta diverse versioni della piattaformaJava SE. Se un'appli azione ri- hiedequindi unaparti olarereleasedellaJSEnon presentenellama hinasu uiviene eseguita, questaverràs ari ataedinstallataautomati amente.
ConJWSèpossibileeseguirediverseappli azioni ontemporaneamente, he
ri hiedonoversionidellapiattaformaJavadierenti,senza ausare onitti;
•
permetteagliappli atividivenireseguitian heinmodalitào-line(tuttavia almeno la prima voltadevono essere s ari ati da un sito Internet). Questipossono essere lan iati an he da ollegamenti presenti su desktop, ome
quando sivuole eseguire un qualsiasiprogramma;
•
aggiornaautomati amenteleappli azioni,grazieadunsistemadi ontrollo versionedei le;•
implementale omponentidi si urezza dellapiattaformaJavaSE, osi hé datie lepresenti sullapropriama hinanon vengonomaiespostiaris hi.Leappli azioni vengono eseguite inun ambienteprotetto, lasandbox 2
, on
un a esso ristretto al dis o lo ale ed alle risorse di rete: in questo modo
l'utente può eseguire appli azioni provenienti an he da fonti non si ure.
Un'appli azionepuòan he ri hiedereun'ese uzionenon limitata(èil aso
2
Unasandboxèunme anismodisi urezzaperl'ese uzionediprogrammiritenutinon
a-dabili. Lasandboxoreunambienteprotettoeduninsiemedirisorsestrettamente ontrollato
eleappli azioni hevivengonoeseguitehannopesantilimitazioni: l'a essoallarete,la
apa- itàdi re uperareinformazionidi sistema olalettura diinput daperiferi hesonodisabilitate
delleappli azioni rmate)per a edere atutte lerisorsedella ma hina su
ui èeseguita; inquesto aso ompariràuna nestradiavvisoriportantele
informazionisul produttore he ha sviluppato l'appli azione: se si darà la
onferma,il programmaverrà eseguito.
JavaWebStartèin lusoinJavaRuntimeEnvironment (JRE)(apartiredalla
versione 5.0) pertanto,installando Java, viene installatoautomati amentean he
Java Web Start.
Late nologia hestaallabasedellaJavaWebStartèlaJavaNetwork Laun hing
Proto olandAPI ( ui isiriferis e onl'a ronimoJNLP).LaJNLPdenis e,tra
le altre ose, un formato di le standard he des rive ome lan iare
un'appli a-zione, ovvero un le on estensione .jnlp. Con il software Java Web Start quindi
l'utente può eseguire un'appli azione li ando un ollegamento in una pagina
web: tale link punta ad un le JNLP, he in ari a JWS di s ari are, salvare ed
avviare ilprogramma.
Sviluppo di un'appli azione Java Web Start
Questisono ipassi hiaveperlosviluppodiun'appli azione he sipreveda di
rendere fruibilemediante Java Web Start:
1. ompilareil odi e sorgentee rearne il relativopa hetto JAR 3
;
2. reare un le JNLP ad-ho per la propria appli azione. Le appli azioni
Java infatti vengono lan iate attraverso il Java Network Laun h Proto ol
(JNLP);
3. reareuna pagina internet on un ollegamentoal propriole JNLP.
Verrannodiseguitoanalizzati,singolarmente,strumentiepro edureutilizzate
perlarealizzazionediun'appli azionedistribuibile onte nologiaJavaWebStart.
3
JAR: a ronimo di Java Ar hive, è un ar hivio ompresso tipi amente utilizzato per
rag-gruppare lassi Java, metadati e risorse(testo, immagini e .) ad esse asso iatee librerie di
5.1 Creazione di un le .jar
Per realizzare un'appli azione Java Web Start è ne essario, prima di tutto, aver
s ritto un programma Java. Una volta ompilato il programma, si deve reare
un ar hivio JAR he ontenga tutto iò di ui il programma ha bisogno: lassi,
librerie, eventuali le d'immagine e quant'altro. La reazione del le non è
par-ti olarmenteosti ase eettuatamedianteambientidisviluppo (E lipse),merita
un po'più d'attenzione seviene realizzata inve e darigadi omando.
Siosservi un parti olare: seilprogrammaJavausalibreriediterze parti he non
appartengono allapiattaformastandard, isono due stradeperfar sì he
l'ar hi-viovengaeseguito orrettamente. Laprima onsistenell'installareilene essari
sulla piattaformaJava del sistema su ui vogliamo far girare il programma
( o-piandoiJARnella artellaext delJRE),lase onda nell'inserimentodellelibrerie
nelprogetto. Con E lipse questa pro edura è moltosempli e:
•
si rea una artellaall'internodel progetto;•
si inseris ononella artella lelibrerie ne essarie;•
siimportanolelibrerienelprogetto,s egliendol'opzioneProperties>Java BuildPath > Libraries >Add JARs.5.1.1 Creazione di un le .jar da onsole
Lapro edurada onsoleri hiede he siarealizzato innanzituttoun lemanifest 4
he ontieneal uneinformazioniriguardoleproprietàdell'ar hivio he siandràa
reare. Nellemanifestèindi atoadesempioilnomedella lasse he ontiene il
metodomainedil lasspathdellelibrerieutilizzatedalprogramma. L'ultimariga
dellemanifestdeve esserelas iatabian ao,inaltre parole,si deveterminareil
ontenuto delle on un omando di newline.
Unavolta reato ille MANIFEST.MF sipuò eseguire il omando:
jar vfm MANIFEST.MF jar-file input-files
Le opzionie gliattributiutilizzati sono iseguenti:
•
l'opzione indi a he si vuole reare un le.jar;•
l'opzionev indi a hesiprodurràunoutputverbose. Durantela reazione del .jar quindi, sulla onsole vengono visualizzati i nomi di tutti i le hesono aggiuntial pa hetto;
•
l'opzionef indi a he si vuole he l'outputsia un le;•
l'opzione m permette di indi are il nome del le manifest. Se non si usa l'opzionem, viene reato un lemanifest di default;•
MANIFEST.MF èil nome dellemanifest asso iato al leJAR;•
jar-le èil nome he si vuole assegnare all'ar hivioJAR. Non è ne essario aggiungereallanedelnomeilsusso.jar he verrà assegnatodidefault;•
input-les è il nome dei le, separati da uno spazio, he si vogliono in lu-derenelpa hetto. E'possibileaggiungereall'ar hivioan heintere artelle.Terminata la reazione, per veri are la orrettezza dell'ar hivio reato è
su ientedigitare ilseguente omando:
java -jar jar-files.jar
eseilpro essoèandatoabuonne,partiràl'ese uzionedelprogrammaJava.
4
5.1.2 Creazione di un le .jar in E lipse
Per reareilleJAR,E lipse metteadisposizioneunutilewizard: basta li are
ol pulsante destro del mouse sul nome del progetto, presente nel pannello di
navigazione disinistra (o in alternativasi selezionail nome del progetto e poi si
s eglieilmenùFile),s eglierelavo e Export,poiJARle. Cisitroverà difronte
allaseguente vista (g. 5.2):
Figura 5.2: Personalizzazione le JAR -S elta deile daesportare
Si può ottenere quindi un ar hivio JAR eseguibile in po hi sempli i passi.
Per in ludere o es ludere deile dall'ar hivio, è possibile selezionarli dalla vista
situata in alto nella nestra; nel aso si voglia allegare an he i le sorgenti del
progetto, ène essariomettereilsegno dispuntaallavo e Export Java sour e le
and resour es.
Proseguendo on il wizardviene data inoltrelapossibilitàall'utentediutilizzare
un le manifest generato in pre edenza (al posto di quello automati o generato
da E lipse) e di inserire il nome della lasse he ontiene il metodo main del
Figura 5.3: Personalizzazione del leJAR - Manifest e Main lass
Al termine del pro esso di personalizzazione, premendo il tasto Finish verrà
generatoun ar hivioJARnellaposizionedanois elta(gura5.2,allavo e sele t
destination), he onterrà i lespe i atiin pre edenza.
5.2 Firma di un le .jar
Uno dei problemi senz'altro più sentiti, in ambito informati o, è quello della
si- urezza. Per ovviare a questo tipo di problemati he, Java propone una serie di
strumenti per la gestione di hiavi pubbli he e private, erti ati e rme
digi-tali. Questi on etti sono essenziali qualora si voglia distribuire un'appli azione
sfruttandola te nologia Java Web Start ed i motivisono presto detti:
•
sideve garantireall'utentel'adabilitàdi un parti olaresoftware. Se l'au-torità ompetente ri onos e un'entità ome trusted, è probabile hel'u-tente nale non abbia remore nell'utilizzare un'appli azione distribuita da
quell'entità;
•
ome si vedrà in 5.3, Java Web Start esegue il software potenzialmente dannoso in un ambiente protetto, la sandbox, he ne limita però lepoten-zialitàel'a esso allerisorse. Per hé l'appli azioneabbiapienoa essoalla
ma hina su ui viene eseguita, deve essere ri onos iuta ome adabile.
Si pro ederà quindi on l'analisi degli strumenti ne essari a rmare un ar hivio
JAR e si vedrà poi nel dettagliola pro edura he porta alla reazione di un
ar- hivio rmato.
Il keytool è uno strumento per la gestione di hiavi e erti ati. Esso
per-metteall'utentediamministrareleproprie oppie hiavepubbli a- hiaveprivata
e di asso iare ad esse dei erti ati on rma digitale, osì da poterle utilizzare
ome erti azione di autenti ità presso altri utenti/servizi o ome garanzia di
integrità deidati. Inoltre il keytool onsenteall'utentedi salvare le hiavi
priva-te ed i erti ati degli altri utenti on ui si viene in ontatto: questi vengono
salvatinelkeystore, un le he protegge hiavi private e erti ati loroasso iate,
perl'autenti azionedella orrispondente hiavepubbli a. Ilkeystore viene reato
ogniqualvoltasiusiil omandokeytool -genkey oppurekeytool -import;esso
è implementato, ome abbiamo già detto, ome un le e se non ne viene
spe i- ato il nome e il path, viene memorizzato nel le di default .keystore presente
nell'home dire torydell'utente. Inoltre, il keystore protegge le hiaviprivate on
delle password, he vengono impostateal momentodella reazione.
Il keystore ha due tipidierentidi entry:
•
key entry: ontiene la hiave privata, memorizzata in un formato pro-tetto per prevenire a essi non autorizzati, a ompagnata dalla atena dierti ati per la orrispondente hiave pubbli a;
•
trusted erti ate entry: ontiene il erti ato on la hiave pubbli- a appartenente ad un'altra entità adabile. Questi erti ati vengonohiamati trusted erti ate.
Tutteleentrydelkeystore sonoa essibilimediantenomiunivo i,glialias,iquali
vengonospe i atinelmomentodella reazione diuna oppiadi hiavi(pubbli a
Un erti atoèundo umentoelettroni odotatodirmadigitale he
garan-tis e heuna hiavepubbli aappartenenteadun'entità(unapersona,unaso ietà,
e .), sia asso iata alla vera identità delsoggetto he la rivendi a ome propria.
In altre parole, un erti ato è un attestato he garantis e un'asso iazione di
tipo hiave pubbli a - entità. Quando si ri evono dati rmatidigitalmente,la
r-mafungedastrumentodi ontrollo perlaveri a diintegritàedautenti ità. Per
integrità siintende he i datinon siano stati manomessio modi ati,autenti ità
signi ainve e he idati provengonoeettivamentedall'ente he aerma diaver
reatoe rmato talidati.
Iljarsignerutilizzaleinformazionidiunkeystore perveri arel'attendibilità
degliar hiviJava(ile.jar). Lo strumentojarsigner veri alermedigitalidei
le .jar, utilizzando i erti ati he le a ompagnano ( ontenute in le
all'inter-no dell'ar hivio JAR) e poi ontrolla se la hiave pubbli a diquel erti ato sia
adabile o meno, ioé se sia ontenuta nelkeystore spe i ato.
Glistrumentikeytool ejarsigner sostituis onoiltooljavakey fornito nelJDK
1.1. Questiduenuoviappli ativiamplianolepotenzialitàdeljavakey,in ludendo
•
lapossibilitàdiproteggereilkeystore ele hiaviprivatemediantepassword;•
lapossibilitàdiveri arelermeedigenerare oppiedi hiavie erti ati. Lanuovaar hitetturadelkeystore rimpiazzailve hiodatabase heveniva reatoe gestito daljavakey. È possibile omunque importare informazionida un
data-base diidentitàin un keystore, utilizzando il omando keytool -identitylib.
Perpoteravere a esso ompleto allerisorse del lientJNLPille.jar
distri-buito deve essere rmato. Nello spe i o aso dell'appli azione he ho
perso-nalmente reato nel lavoro ditesi, laprovenienza el'identitàdi hil'ha s rittaè
erta (il sottos ritto), pertanto per testare la te nologia JWS è stato su iente
utilizzareun erti atoauto prodotto. Vediamoqualisono ipassi daseguireper
rmare un le on estensione .jar on i se urity tool messi a disposizione dalla
JDK.
Una volta reato il le DesktopAppli ation.jar he ontiene tutte le lassi e
le librerie ne essarie al funzionamento del programma, si devono generare un
keystore ed una oppiadi hiavi. Perfar questo,utilizziamoilseguenti omando:
Questo omando rea un nuovo keystore hiamato mykeystore e situato in
keytool -genkey -dname n=Mi hele Pantano, o=E-proje t, st=PD
=IT -alias desktopApp -keypass desktopApp -validity 180
-keystore C:/Users/Mi hele/mykeysto re -storepass mykeystorepass
omessaquestavo e, sarebbestato utilizzatoilkeystore didefault .keystore
situa-tonell'home dire torydell'utente). Inoltre viene generata la oppiadi hiavi per
l'entità il ui nome è Mi hele Pantano, l'azienda è E-proje t, la provin ia è
PadovaeloStatoèIT;le hiavisongenerate onalgoritmodigenerazioneDSA
e lunghezza delle hiavi di1024 byte.
Viene reatoinaggiuntaan heun erti atoautormato (utilizzandol'algoritmo
dirmaSHA1withDSA) hein ludela hiavepubbli aeleinformazioni
riguar-danti l'entità generatri e di tale hiave (quelle passate on il omando -dname).
Questo erti ato sarà valido per 180 giorni ed è asso iato alla hiave privata
presente nel keystore a ui i si riferis e on l'alias desktopApp; la password
asso iata alla hiave privata è desktopApp. Il omando avrebbe potuto essere
an he signi ativamente più orto (ssarebbe stato u iente keytool -genkey)
sefosserostate a ettateleimpostazionididefault(validitàdel erti atoper90
giorni, alias mykey, keystore .keystore). Al une informazionisarebbero state
omunque ri hieste all'utente, ome la password delkeystore, lapassword per la
hiaveprivataeleinformazionisull'entitàgeneratri edelle hiavi( hesonodette
distinguished name information).
Finora si è ottenuto un erti ato auto-rmato: un erti ato risulta essere
a ettato on più si urezza se rmato da una Certi ation Authority (CA).
Per ottenere una rma si deve quindi prima di tutto generare una Ri hiesta di
Firma del Certi ato (CSR) attraverso il omando
keytool - ertreq -file CertSignReq. sr -alias desktopApp
per mezzo del quale per l'entry desktopApp del keystore viene reata una
CSR emessa nel leCertSignReq. sr. In un se ondo momentosi dovràinoltrare
taleleadunaCerti ationAuthority(adesempioVeriSign,In ) he provvederà
all'autenti azione e ritornerà un erti ato, rmato da essi stessi, he autenti a
la hiave pubbli a reata. L'ultimo passoè quellodirimpiazzare ilproprio
erti- atoautormato onquelloappenaottenuto dallaCA, osi hégliar hiviJAR
rmati risultino essere adabili agli o hi degli utilizzatorinali. Per fare iò
è su ienteil omando
Giuntiaquestopunto,sihannotuttiglistrumentine essariperrmare onun
erti ato si uro il proprioar hivio .jar. Il omando seguente a partire dalle
desktopApp.jar produ el'ar hiviormatodesktopAppSigned.jar onil erti ato
asso iato all'entry delkeystore desktopApp ( he è l'entry per ui si era ri hiesta
la erti azione allaCAVeriSign, In )
jarsigner -signedjar desktopAppSigned.jar desktopApp.jar desktopApp
Sisuppongaora he l'ar hivioJAR rmatosiastatodistribuito e he il
lien-te he voglia utilizzare tale appli azione, desideri prima veri are l'autenti ità
della rma. Per fare iò egli dovrà, innanzitutto, importare il erti ato della