read

Beaucoup de sites ont modifié leur support SSL pour utiliser TLS 1.2 à la place de SSL v3. Java 6 ne fonctionne plus avec cette configuration et le code suivant ne marche qu'à partir de la version 7 du JRE :

import java.net.HttpURLConnection;
import java.net.URL;

public class TestHttp {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://secure-test.be2bill.com/front/service/rest/process.php");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        System.out.println("Fetching " + url);
        try {
            int responseCode = conn.getResponseCode();
            if (responseCode == 200) {
                System.out.println("Site is up, content length = " + conn.getHeaderField("content-length"));
            } else {
                System.out.println("Site is up, but returns non-ok status = " + responseCode);
            }
        } catch (java.net.UnknownHostException e) {
            e.printStackTrace();
            System.out.println("Site is down");
        }
    }
}

L'utilisation de la librairie BouncyCastle - qui propose des compléments d'algorithmes de cryptographie - ne permet pas de contourner le problème. L'ajout de cette ligne de code ne change pas le problème :

Security.addProvider(new BouncyCastleProvider());

Et la configuration du fichier java.security en ajoutant un provider ne change rien :

security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider

Seule la mise à jour du JRE à la version 1.7, voire la 1.8, permet de contourner ce problème.

Blog Logo

Mathieu Gandin


Published

Image

Random Code

I program my home computer / Beam myself into the future

Back to Overview