2017-06-22 4 views
1

Ich versuche, einen Webservice zu treffen, der TLSv1.2 unterstützt. Ich benutze Java 1.4. TLSv1.2 wird nicht unterstützt.Getting No solche Algorithmus Ausnahme bei der Verwendung von TLSV1.2 in Java 1.4

Jetzt sagte mir jemand, dass BC mein Problem lösen könnte. Funktioniert es mit einer SSLE-Engine irgendwie als Ersatz? Ist das mit BC möglich?

Was muss ich tun, um eine funktionierende SSLEngine (für die Verwendung mit TLSv1 in einem nonblocking io-Szenario) ohne so geringe Einschränkungen der Primzahl für DH zu erhalten.

Was ich versucht:

Security.addProvider(new BouncyCastleProvider()); 

Dies scheint nicht allein das Problem zu lösen.

Also statt

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

Ich habe versucht, die folgenden Aufruf:

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

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

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

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

Obwohl alle von ihnen NoSuchAlgorithmException wirft.

+0

Release: 1,57 Datum: 2017, 11. Mai Bouncy Castle Bibliothek sagt, dass eine höhere Ebene TLS API und JSSE-Provider zum Projekt hinzugefügt wurden. – GauravT

Antwort

1

ich dies könnte durch die Verwendung bctls lib, lösen aber leider scheint es nicht eine Version für Java 1.4 zu haben.

Die einzige Version, die ich in Bouncy Castle's website und in Mvn Repository finden konnte, ist bctls-jdk15on-157 (für Java> = 1.5).

Wie auch immer, wenn ein Upgrade Ihrer Java-Version möglich ist, müssen Sie nur dieses Glas zu Ihrem Projekt hinzufügen und verwenden Sie die org.bouncycastle.jsse.provider.BouncyCastleJsseProvider Klasse (Ich habe Java 1.7 für diesen Test verwendet):

// 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); 

Alle obigen Tests laufen ohne Fehler.

Überprüfung alle SSL-Protokolle unterstützt:

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

Die Ausgabe lautet:

[TLSv1.1, TLSv1, TLSv1.2]

+0

Es sieht gut aus, aber ich kann nicht wegen der Java-Version Problem verwenden. BC sagt, dass sie TLS auch für Java 1.4 unterstützen. BC-Kommentare für 1.57-Version: "Dem Projekt wurden ein TLS-API und JSSE-Provider auf höherer Ebene hinzugefügt". Ich suche nach Beispielprogramm für Java 1.4, das TLSv1.2 verwendet, das bouncycastle verwendet. – GauravT

+0

Ich habe diese Information nicht in der BC-Website gefunden (dass JSSE in Java 1.4 unterstützt wird - es gibt nur ein bctls-Paket für Java> = 1.5) –

+0

Sie können BC Artikel finden. Gehen Sie zu Abschnitt 2.2.3 Zusätzliche Funktionen und Funktionen.https://www.bouncycastle.org/releasenotes.html – GauravT

Verwandte Themen