Newsgroup: it.comp.java
Titolo: creare applet firmate

Devo creare un'applet che possa leggere o scrivere da hard disk (lettura e 
salvataggio files; basterebbe una cartella decisa dall'utente), nonchè 
gestire una SSLSocket (come client) tra l'utente e il sito su cuii si trova 
l'applet.
Scartando l'idea che l'utente debba modificare a mano i permessi digitando 
sequenze di comandi (troppo complicato per la maggior parte degli utenti di 
un normale sito web), volevo capire come si possa rendere l'applet (o anche 
LE applet, una per ogni browser) funzionale sui vari browser esistenti. Non 
ho trovato nulla di recente in rete (come si fa con Opera, o, soprattutto, 
con Firefox?), ma anche per quanto riguarda Internet Explorer, non ho capito 
come si possano creare i famigerati files cab necessari alla firma 
dell'applet.
Qualcuno sa illuminarmi? 

 trova l'applet.
Sono riuscito (con Java 5 di Sun attivo) a importare il certificato creato
con keytool per prova; solo che non riesco a far funzionare l'SSLSocket tra 
applicazione e applet.
Il problema č che con il seguente file batch:
C:\jdk1.3.1_14\bin\keytool -genkey -keystore pwdS -keyalg rsa -alias 
marco -storepass 123456
C:\jdk1.3.1_14\bin\keytool -genkey -keystore pwdS -dname 
"cn=
www.equazioni.it
" -storepass 123456
C:\jdk1.3.1_14\bin\jarsigner -keystore pwdServer -storepass 
123456 -signedjar firmata.jar client.jar marco
C:\jdk1.3.1_14\bin\keytool -export -keystore pwdS -storepass 123456 -alias 
marco -file certificato.cer
ho creato i files pwdServer e certificato.cer; il primo funziona 
perfettamente da applicazione ad applicazione con i seguenti comandi:
java -jar -D -Djavax.net.ssl.keyStore=pwdServer -Djavax.net.ssl.keyStorePassword=123456 
server.jar
java -jar -Djavax.net.ssl.trustStore=pwdServer -Djavax.net.ssl.trustStorePassword=123456 
client.jar
Se, al posto dell'applicazione client, apro l'applet firmata in una pagina 
html, e scelgo di importare il certificato, pur riuscendo a leggere e 
scrivere da disco, non riesco a comunicare con il server.
L'applet riporta il messaggio "javax.net.ssl.SSLHandshakeException: 
sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find 
valid certification path to requested target", mentre l'applicazione server 
riporta l'eccezione "javax.net.ssl.SSLHandshakeException: Received fatal 
alert: certificate_unknown".
Credo che il problema sia che l'applicazione usa il Keystore pwdServer, 
mentre l'applet il certificato certificato.cer. Come posso risolvere?

 Qualcuno sa illuminarmi?
Intanto, non dovrebbero esserci file cab.. lascia stare microsoft.. si fa
tutto con i Jar. Poi.. sta tutto nel JDK. 
Usa 'keygen' per creare una chiave
Usa 'jarsigner' con il tuo jar per firmarlo. Fatto.
E funziona con tutti i browser.
-- 
Pietro
(\_/)  <- This is Bunny.
(°_°)     Copy Bunny into your signature to help
(> <)     him on his way to world domination.

 E funziona con tutti i browser.
Ti ringrazio per la risposta; in realtà ho già provato questa strada; 
funziona per quanto riguarda la lettura e la scrittura da HS, ma non per 
l'SSLSocket.
Sembra che il certificato certificato.cer, ricavato dal keystore pwd con il 
comando:
keytool -export -keystore pwd -alias marco -file certificato.cer -storepass 
123456
non venga correttamente riconosciuto dal server.
Da notare che aprendo server e client con le istruzioni (in cmd):
java -jar -D -Djavax.net.ssl.keyStore=pwd -Djavax.net.ssl.keyStorePassword=123456 
server.jar
java -jar -Djavax.net.ssl.trustStore=pwd -Djavax.net.ssl.trustStorePassword=123456 
client.jar
funziona tutto correttamente, mentre aprendo il client con l'applet firmata 
(client.htm), ottengo le seguenti eccezioni:
sul client: javax.net.ssl.SSLHandshakeException: 
sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find 
valid certification path to requested target
sul server: javax.net.ssl.SSLHandshakeException: Received fatal alert: 
certificate_unknown
Forse dovrei trovare il modo di far partire l'applet con qualche istruzione 
che sia equivalente a 
"-Djavax.net.ssl.trustStore=pwd -Djavax.net.ssl.trustStorePassword=123456", 
ma non ne sono sicuro, e oltretutto non saprei come.

 E funziona con tutti i browser.
Se è installata (e abilitata) la JVM di SUN; con quella di Microsoft neanche 
se preghi in ginocchio... e vorrei tanto capire dove si trova il tool 
Microsoft per firmare le applet.... 

 tool Microsoft per firmare le applet....
Lascia perdere microsoft.. la sua JVM non supporte nemmeno swing...
perché usarla? C'è la JVM 5.0 ora..


 microsoft che chiamano jvm, tra l'altro è compatibile con java 1.1!
Piacerebbe anche a me non considerare quella porcheria (pensa che ho dovuto 
ricopiare, a moì di libreria, una classe di un package di Sun per poter 
utilizzare l'equivalente di System.setProperty...), ma purtroppo tanti 
utenti hanno solo quella nel PC, non hanno voglia o capacità di cercarsi 
quella di Sun.... e, come dire, finchè la montagna non va da Maometto...