Salve,
ho un piccolo problema e spero che riusciate ad aiutarmi perchè non so più dove sbattere la testa.
Veniamo al dunque, piccola premessa prima:
ho sviluppato un client in java che comunica in SOAP SSL, grazie ad Axis, con un WebService in remoto. Questa di seguito è la configurazione ssl che ho fatto all'interno della mia applicazione java e che mi permette di far funzionare tutto regolarmente.
codice:
//truststore contenente il certificato pubblico
System.setProperty("javax.net.ssl.trustStore", "newstore");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
System.setProperty("javax.net.ssl.trustStoreType","JKS");
//keystorestore contenente il certificato privato
System.setProperty("javax.net.ssl.keyStore", "certificato.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "654321");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
Come si può vedere dalla configurazione, come truststore utilizzo un JKS, invece come keystore utilizzo direttamente il p12 che mi ha fornito il cliente. In questo modo l'handshake con il server in remoto funziona alla grande e riesco ad accedere al WebService.
Adesso però ho l'esigenza di mettere anche il p12 all'interno di un JKS, in modo tale che possa avere più di un certificato al suo interno, ma purtroppo ho riscontrato qualche problema.
Ho importato un p12 all'interno di un JKS in questo modo
codice:
keytool -v -importkeystore -srckeystore my.p12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS
eseguendo il comando mi viene chiesto di inserire la pass di destinazione e successivamente quella di origine, inserisco tutto e l'importazione avviene correttamente.
A questo punto carico il keystore all'interno di java in questo modo
codice:
System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "654321");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
provo a connettermi al WebService in remoto ma non riesco più e ottengo questa eccezione
codice:
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
se invece rimetto il p12 come keystore tutto ritorna a funzionare... c'è qualcuno che può darmi una mano? non so più che fare, su internet non ho trovato molto nello specifico... dove sbaglio?
grazie