java https networking issue
<p>I'm trying to implement simplest https communication program. There are a lot of examples in net. But I fail to run them successfully.<br>
Here is one example: <br></p>

<pre>
public class ReadHttpsURL1 {
   static final int HTTPS_PORT = 443; 

   public static void main(String argv[]) throws Exception {
       String url = "www.sun.com";
       System.setProperty("java.net.useSystemProxies", "true");

      SocketFactory factory = SSLSocketFactory.getDefault(); 

      Socket socket = factory.createSocket(url, HTTPS_PORT); 

      BufferedWriter out = new BufferedWriter(new 
            OutputStreamWriter(socket.getOutputStream()));
      BufferedReader in = new BufferedReader(
        new InputStreamReader(socket.getInputStream()));
      out.write("GET / HTTP/1.0\n\n");
      out.flush();

      String line;
      StringBuffer sb = new StringBuffer();
      while((line = in.readLine()) != null) {
         sb.append(line);
      }
      out.close();
      in.close();
      System.out.println(sb.toString());
   }
}</pre>

<p>It hangs up for a time about a minute (I believe due to server-side timeout) and fail with error. Hangs up on</p>

<pre>
      Socket socket = factory.createSocket(url, HTTPS_PORT); 
</pre>

<p>Error is</p>

<pre>
Exception in thread "main" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocksSocketImpl.readSocksReply(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
    at com.sun.ex1.ReadHttpsURL1.main(ReadHttpsURL1.java:20)
</pre>

<p>Here is second example:</p>

<pre>
public class HttpsTest {

    public static void main(String[] args) throws MalformedURLException, IOException {
        System.setProperty("java.net.useSystemProxies", "true");

        URL url = new URL("https://www.sun.com");
        URLConnection con = url.openConnection();
        con.setAllowUserInteraction(true);
        InputStream is = new BufferedInputStream(con.getInputStream());
        for (int b = is.read(); b >= 0; b = is.read()) {
            System.out.write(b);
        }
    }
}
</pre>

<p>Just throw this exception:</p>

<pre>
Exception in thread "main" javax.net.ssl.SSLKeyException: RSA premaster secret error
    at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.(Unknown Source)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at HttpsTest.main(HttpsTest.java:16)
Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
    at javax.crypto.KeyGenerator.(DashoA13*..)
    at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
    at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(Unknown Source)
    ... 14 more</pre>

<p>I've read a bit about NoSuchAlgorithmException. This seems to be related with sunjce_provider.jar<br>
But I've tried different variants to include this file to classpath even make application dependency to this jar (jar was present in classpath for sure)<br></p>

<p>Https url is live url. Proxy settings is working (due to it throw different connection exception otherwise).<br>
java version "1.6.0_23"<br></p>

<p>Are these errors related?<br>
Any ideas how to fix?<br>
Thanks for help...</p>
