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:
e fino a qui tutto bene, nel senso che crea i due file.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
Poi, nel codice del client, faccio questo:
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: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*/
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.codice:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Chi mi può aiutare?
Grazie a tutti!
Simone

Rispondi quotando