Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Randomly SSLException Unsupported record version Unknown-0.0

Sometimes the code below fails and sometimes it work. I'm using Java8. Is it a server side problem?

Exception in thread "main" javax.net.ssl.SSLException: Unsupported record version Unknown-0.0.

EDIT: I downgrade to JDK7 from JDK8 and it works. The only solution i found that works.

public static void main(String[] args) throws Exception {
    URL u = new URL("https://c********.web.cddbp.net/webapi/xml/1.0/");
    HttpURLConnection connection = (HttpURLConnection) u.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setInstanceFollowRedirects(false);
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "text/plain");
    connection.setRequestProperty("charset", "utf-8");
    connection.setRequestProperty("Content-Length", "" + 140);
    connection.setUseCaches(false);
    DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
}
like image 952
daniele.guiducci Avatar asked Apr 27 '14 14:04

daniele.guiducci


3 Answers

I got the same error message in a new java installation when trying to use an SSL connection that enforces 256-bit encryption. To fix the problem I found I needed to install the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files (e.g. http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)

like image 133
Michael O'Connor Avatar answered Oct 20 '22 07:10

Michael O'Connor


Download the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files according to your JDK/JRE version and put it in lib/security folder

By default,Java Cryptographic Extension is limited in accessing function and algorithm usage.We need to make it unlimited.

like image 25
rts Avatar answered Oct 20 '22 06:10

rts


I had this line

    SSLContext sc = SSLContext.getInstance("SSL");

Had to change it to

    SSLContext sc = SSLContext.getInstance("TLSv1");

And now it works on both, java 7 and java 8

Note: (In java 7 SSL and TLS both worked with the same url, in java 8 just tried TLSv1 but I guess SSLv1 also works)

like image 25
Peter Escamilla Avatar answered Oct 20 '22 06:10

Peter Escamilla