Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

No solution found... java.net.SocketException: SSL implementation not available

8 views
Skip to first unread message

Renaud COLAS

unread,
Feb 13, 2003, 2:58:51 PM2/13/03
to
Hello all,

First of all, please accept I'm a real newbby in Java...


Here's my problem :
I'm re-using a code made month ago.


* What I want to do :
send a file to https://... server through a .class launch via a
"java -classpath ... myProgram"


* What Happens :
as far as now, the following code works until the highlighted line is
reached.
I found many posts refering to this error but none of the solutions offered
did work.
The 2 error I had (depending on the mechine running the program) :
< java.net.SocketException: SSL implementation not available >
< java.net.MalformedURLException: unknown protocol: https >


* More informations :
tested on win95 / NT4 / 2k
tested on Tomcat + JDK1.3.1 + JSSE
tested into JBuilder 8 free edition mathed to JDK1.3.1_07 + JSSE


* Solution already tested :
added provider to <jdk>\jre\lib\security\java.security
added file called "verisign" made from verisign's certificate (wich was
export in IE) through the command line :
keytool -import -alias <aliasName> -file
<fileWithCertificateFromCA> -trustcacerts -v -keystore
<jreHome>\jre\lib\security\verisign
added dynamic declaration of provider + properties in code (see below)

many thanks 4 your help!!
Reno

// ====== BEGIN CODE ====== //
import java.net.*;
import java.util.*;
import java.io.*;

import com.sun.net.ssl.*;
import sun.net.www.protocol.http.HttpURLConnection;

import java.security.*;
import java.security.cert.*;

[...]

try {
String urlhttp = "https://www.verisign.com";
url = new java.net.URL(urlhttp);
System.out.println("url : " + url.toString());

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.ww
w.protocol");
// following is located in <jdk1.3.1_07>\jre\lib\security
System.setProperty("javax.net.ssl.keyStore","verisign");
System.setProperty("javax.net.ssl.keyStorePassword","verisign");


System.out.println("connecting...");
conn = (HttpURLConnection) url.openConnection();
System.out.println("connected");

conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);

// THE FOLLOWING LINE RESULT IN ERROR SHOWN BELOW
System.out.println("Server: " + conn.getHeaderField("Server"));
System.out.println("conn.getResponseCode() : " +
conn.getResponseCode());
System.out.println("conn.usingProxy() : " + conn.usingProxy());
System.out.println("conn.getRequestMethod() : " +
conn.getRequestMethod());

}
catch (java.net.MalformedURLException e) {
System.out.println("Error : MalformedURL");
e.printStackTrace();
}
catch (Exception e) {
System.out.println("Error : connection failed...");
System.out.println("url : " + url);
System.out.println("OpenConnection : " + conn);
System.out.println("Protocol : " +url.getProtocol());
e.printStackTrace();

}
finally{
conn.disconnect();
System.out.println(this.getClass() + ".testConnection() :
...disconnecting");
}
[...]
// ====== END CODE ====== //

//===== BEGIN ERROR RECEIVED =====//
java.net.SocketException: SSL implementation not available
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(DashoA6275)
at sun.net.www.https.HttpsClient.doConnect(HttpsClient.java:300)
at sun.net.NetworkClient.openServer(NetworkClient.java:33)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:555)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:270)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:275)
at sun.net.www.https.HttpsClient.<init>(HttpsClient.java:230)
at sun.net.www.https.HttpsClient.New(HttpsClient.java:243)
at
sun.net.www.protocol.https.HttpsURLConnection.connect(HttpsURLConnection.jav
a:99)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection
.java:510)
at
sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection
.java:881)
at myClass.testConnection(myClass.java:265)
at myClass.start(myClass.java:117)
at myClass.main(myClass.java:57)

//===== END ERROR RECEIVED =====//


0 new messages