2017-06-22 3 views
1

J'essaye de frapper un service Web qui supporte TLSv1.2. J'utilise Java 1.4. Il ne supporte pas TLSv1.2. Maintenant, quelqu'un m'a dit que BC pourrait résoudre mon problème. Bien que cela fonctionne avec un SSLEngine comme remplacement en quelque sorte? Est-ce possible avec BC?Obtenir Aucune telle exception d'algorithme lors de l'utilisation de TLSV1.2 dans Java 1.4

Que dois-je faire pour obtenir un fonctionnement SSLEngine (à utiliser avec TLSv1 dans un scénario non bloquant ) sans restrictions si faibles pour le dosage de la DH.

Ce que j'ai essayé:

Security.addProvider(new BouncyCastleProvider()); 

Ce seul ne semble pas résoudre le problème.

Ainsi, au lieu de

SSLContext.getInstance("TLSv1"); //which works alas only little DH keys. 

J'ai essayé d'appeler les éléments suivants:

SSLContext.getInstance("TLSv1","BC"); 

SSLContext.getInstance("TLS","BC"); 

SSLContext.getInstance("TLSv1.2","BC"); 

SSLContext.getInstance("ssl","BC"); 

Bien que tous les lancers francs NoSuchAlgorithmException.

+0

sortie: 1,57 Date: 2017, 11 mai La bibliothèque Bouncy Castle indique qu'un API TLS de niveau supérieur et un fournisseur JSSE ont été ajoutés au projet. – GauravT

Répondre

1

je pourrais résoudre ce problème en utilisant bctls lib, mais unfortunatelly il ne semble pas avoir une version pour Java 1.4 .

La seule version que je pouvais trouver dans Bouncy Castle's website et Mvn Repository est bctls-jdk15on-157 (pour Java> = 1,5).

Quoi qu'il en soit, si une mise à niveau de votre version Java est possible, il vous suffit d'ajouter ce pot à votre projet et utiliser la org.bouncycastle.jsse.provider.BouncyCastleJsseProvider classe (je l'ai utilisé Java 1.7 pour ce test):

// add the JSSE provider 
Security.addProvider(new BouncyCastleJsseProvider()); 

// tests 
SSLContext.getInstance("TLSv1.1", BouncyCastleJsseProvider.PROVIDER_NAME); 
SSLContext.getInstance("TLSv1.2", BouncyCastleJsseProvider.PROVIDER_NAME); 
SSLContext.getInstance("TLSv1", BouncyCastleJsseProvider.PROVIDER_NAME); 

Tous les tests ci-dessus s'exécutent sans erreur.

Vérification tous les protocoles SSL pris en charge:

SSLContext context = SSLContext.getInstance("TLSv1", BouncyCastleJsseProvider.PROVIDER_NAME); 
System.out.println(Arrays.toString(context.getSupportedSSLParameters().getProtocols())); // [TLSv1.1, TLSv1, TLSv1.2] 

La sortie est:

[TLSv1.1, TLSv1, TLSv1.2]

+0

Il semble bon, mais je ne peux pas utiliser en raison de problème de version de Java. BC dit qu'ils fournissent également le support de TLS à Java 1.4. Les commentaires de BC pour la version 1.57: «Un API TLS de niveau supérieur et un fournisseur JSSE ont été ajoutés au projet». Je cherche un exemple de programme pour java 1.4 qui utilise TLSv1.2 en utilisant bouncycastle. – GauravT

+0

Je n'ai pas trouvé cette information dans le site Web de BC (que JSSE est pris en charge dans Java 1.4 - il n'y a qu'un paquet bctls pour Java> = 1.5) –

+0

Vous pouvez trouver l'article BC. Passez à la section 2.2.3 Fonctionnalités et fonctionnalités supplémentaires.https://www.bouncycastle.org/releasenotes.html – GauravT