Problèmes avec la configuration https.les protocoles de Système de Propriété pour les connexions HTTPS

J'ai une Implémentation de Java qui est utilisé par différentes applications de client se connecte aux systèmes tiers. Ces systèmes tiers prend en charge différents protocoles sur http/https. Dans ce cas, toutes les applications clientes sont hébergées sur le même serveur où mon Java Application hébergée. Donc,dans ce cas, des applications de divers clients de définir différents protocoles https pour les propriétés du Système (par exemple: System.setProperty("https.protocols", "SSLv3") , System.setProperty("https.protocols", "TLS") quand ils sont à l'aide de cette de se connecter à ces systèmes tiers.

Ici, les propriétés du Système sont partagés entre toutes les applications dans l'environnement. Ainsi, la modification d'un Système de propriété conduit à de nombreux problèmes. Donc, je veux savoir,

  1. Est-il possible de le faire sans l'aide des propriétés Système?
  2. Est-il un moyen de régler tous les possibles https.les protocoles de sorte qu'il
    prend en charge toute connexion http ou https faite à la troisième partie
    les systèmes prend en charge divers protocoles?

Les protocoles et les algorithmes pris en charge dans chaque version du JDK comme mentionné dans blogs.oracle.com:
Problèmes avec la configuration https.les protocoles de Système de Propriété pour les connexions HTTPS

Code :

String responseStr = null;

System.setProperty("https.protocols",http-protocol); //This is set by the client applications. Previously, there was one by one (eg : "SSLv3". Then I changed it to "TLSv1.2,TLSv1.1,TLSv1,SSLv3" assuming it will enable all) 

byteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byteArrayOutputStream.write(requestStr.getBytes());

URL mUrl = new URL(proxy_url);
HttpURLConnection con = (HttpURLConnection) mUrl.openConnection(); //It works fine for the HttpURLConnection when there's no (s)

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

con.setRequestProperty("user-agent","Mozilla(MSIE)");
con.setRequestProperty("Accept-Encoding","gzip,deflate");

byteArrayOutputStream.writeTo(con.getOutputStream());

String encodingHeader = con.getHeaderField("Content-Encoding");
InputStream inputStream = null;

if(encodingHeader != null && encodingHeader.toLowerCase().indexOf("gzip") != -1){
    inputStream = new GZIPInputStream(con.getInputStream());
}else {
    inputStream = con.getInputStream();

}

if (inputStream != null) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
       byte[] buffer = new byte[4096];
       int length = 0;

       while ((length = inputStream.read(buffer)) != -1) {
           baos.write(buffer, 0, length);
       }

    responseStr = new String(baos.toByteArray());
    baos.close();

 }

Mon Java version : 1.5

Vous avez besoin de mettre à niveau. 1.5 est sorti il y a dix ans.
C'est très vrai. Mais pour l'instant il y a un grand contournement là pour ça. Donc, je suis à la recherche de solution dans la version actuelle
Les réponses à cette question peuvent être pertinents: superuser.com/questions/747377/... De la note est la documentation d'Oracle, qui montre que, bien que TLS1.2 est pris en charge sur Java 1.7, il est désactivé par défaut pour les connexions client.
Le ByteArrayOutputStream est un gaspillage de temps et d'espace ici.

OriginalL'auteur namalfernandolk | 2015-12-15