Finally it works. I forgot to set this property: System.setProperty("javax.net.ss.trustStorePassword", "keystorePass"); System.setProperty("javax.net.ssl.keyStorePassword", "keystorePass");
thanks anyway Michele p.s. (charm,not sharm) :) ----- Original Message ----- From: "Trimarchi Michele" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, February 27, 2003 4:55 PM Subject: Soap-Https connection problem > Hi there.. > i'm trying to connect to a webservice that requires client authentication > with https protocol but i can't connect because my servlet throws > this exception. > > [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: > java.net.SocketException: SSL implementation not available; > targetException=java.lang.IllegalArgumentException: Error opening socket: > java.net.SocketException: SSL implementation not available] > at > org.apache.soap.transport.http.SOAPHTTPConnection.send(SOAPHTTPConnection.ja > va:354) > at org.apache.soap.rpc.Call.invoke(Call.java:248) > at TestPagamentiSOAP.doPost(TestPagamentiSOAP.java:62) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)[...] > > I have used keyman and in a file called client3.keystore file i have > imported correctly private key for client authentication and server > certificate for CA. > > a snippet of my code.. > System.setProperty("java.protocol.handler.pkgs", > "com.sun.net.ssl.internal.www.protocol"); > Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); > System.setProperty("javax.net.ssl.trustStore","C:\\Documents and > Settings\\mymachine\\Desktop\\client3.keystore"); > System.setProperty("javax.net.ssl.keyStore", "C:\\Documents and > Settings\\mymachine\\Desktop\\client3.keystore"); > > String SOAPActionURI = ""; > Call call = createCall(); > call.setMethodName("HelloWorld"); > call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); > call.setTargetObjectURI("urn:Service1"); > Vector params = new Vector(); > Parameter valorePar = new Parameter("valore", int.class, new > Integer(valore), Constants.NS_URI_SOAP_ENC); > params.addElement(valorePar); > Parameter nomePar = new Parameter("nome", java.lang.String.class, nome, > Constants.NS_URI_SOAP_ENC); > params.addElement(nomePar); > call.setParams(params); > URL nuovoURL=new > URL("https://serverwithhttps/pagamentiinternet/pagamento.asmx"); > org.apache.soap.rpc.Response resp = call.invoke(nuovoURL, SOAPActionURI); > > on invoke it throws the exception!!!!! > > It's very strange because with the following code everything works great. > > [..] > System.setProperty("java.protocol.handler.pkgs", > "com.sun.net.ssl.internal.www.protocol"); > Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); > > SSLSocketFactory ssf; > TrustManagerFactory tmf; > KeyManagerFactory kmf; > KeyStore ks; > FileInputStream fis; > String pathKeyStore="C:\\Documents and > Settings\\mymachine\\Desktop\\client3.keystore"; > char[] passphrase = "keystore".toCharArray(); > > fis=new FileInputStream(pathKeyStore); > ks = KeyStore.getInstance("JKS"); > ks.load(fis, passphrase); > tmf = TrustManagerFactory.getInstance("SunX509"); > tmf.init(ks); > kmf = KeyManagerFactory.getInstance("SunX509"); > kmf.init(ks, passphrase); > SSLContext ctx = SSLContext.getInstance("TLS"); > ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); > fis.close(); > > try { > URL url = new > URL("https://serverwithhttps/pagamentiinternet/pagamento.asmx"); > com.sun.net.ssl.HttpsURLConnection connection = > (com.sun.net.ssl.HttpsURLConnection) url.openConnection(); > ssf = ctx.getSocketFactory(); > connection.setSSLSocketFactory(ssf); > connection.connect(); > System.out.println("Connection OK:" + connection.getURL()); > [...] > > > This code works like a sharm,so i'm pretty sure that keystore is correct. > I'm using: > jdk 1.2.2 > jsse-1_0_3_01 > apache soap 2.3 > > Any hints? > Tnx in advance. > > Michele > > > >