Ciao a tutti!
Ho un problema credo derivante dalla mia completa ignoranza in materia di certificati.
Devo realizzare in Java un client per un webservice a cui posso connettermi con due differenti URL:
- una di sperimentazione, via HTTP; qui non ho problemi.
- una di attività vera e propria, in HTTPS (SSL mutualmente autenticato); e qui iniziano le rogne!

Il gestore del webservice mi ha fornito il mio certificato (client.cer) e quello della Root CA (rootCA.cer).
Da quello che ho capito leggendo in giro, devo metterli in un keystore, poi da codice puntare al keystore che li contiene prima di effettuare la connessione, giusto?

Io ho fatto così:
1) ho messo i certificati in un keystore, usando da riga di comando keytool:

codice:
keytool -importcert -file c:\client.cer -keystore c:\keystore1 -alias client -noprompt -storepass 000000

keytool -importcert -file c:\rootCA.cer -keystore c:\keystore2 -alias ca -noprompt -storepass 000000
e fino a qui tutto bene, nel senso che crea i due file.

Poi, nel codice del client, faccio questo:

codice:
System.setProperty("java.net.ssl.keyStore", "c:\\keystore1");
System.setProperty("java.net.ssl.keyStorePassword", "000000");
System.setProperty("java.net.ssl.trustStore", "c:\\keystore1");
System.setProperty("java.net.ssl.trustStorePassword", "000000");

/*qui eseguo il codice per la connessione https*/
Al momento in cui avviene la connessione (non allego il codice solo perchè utilizzo classi generate automaticamente dal WSDL tramite Axis2, e credo sarebbe di scarsa utilità), ricevo questa eccezione:

codice:
 sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Di sicuro sto facendo cavolate gigantesche, ma, ripeto, non conosco quasi niente sui certificati ed il problema è che questa cosa la devo risolvere in troppo poco tempo per mettermi a studiare il tutto.
Chi mi può aiutare?

Grazie a tutti!

Simone