Wie kann ich auf Java / JRE-Ebene zwischen TLS 1.0 und SSL 3.0 wechseln?

7

Ich verwende java 1.6.Ich habe meinen Tomcat als meinen sslaktivierten Server eingerichtet. Und ich habe einen SSL-fähigen Client (Java-Code) eingerichtet. Wenn ich eine Kommunikation von meinem Client zum Server mache. Im Java-SSL-Speicherauszug in Tomcat- TLSv1Protokollen wird sowohl von meinem Client als auch von meinem Server immer die SSL-Protokollversion ausgewählt. Gibt es eine Möglichkeit, zwischen SSLv3und TLSv1Protokollen für eine sichere Verbindung zu wechseln ? Wie kann ich eine Client-Server-Kommunikation mit herstellen SSLv3?

Danke im Voraus!

Anita
quelle
Aber SSLv3 ist weniger sicher als TLS
OrangeDog
Steuern Sie den Code der Clientanwendung? Dies ist nicht genau so möglich, wie Sie es wünschen. Dies scheint zu sein, dass Sie nur einen Weg akzeptieren, der TLSv1 vollständig aus der JVM entfernt. Bitte klären Sie, was Sie erreichen möchten und warum eine andere Methode, um dieselbe Lösung zu erhalten, nicht akzeptabel ist.
Shane Madden
Das Poster muss eine App oder Umgebung simulieren, die auf ssl3 steckt. Dies ist ein allgemeines Bedürfnis, um zu sehen, wie sich Legacy-Systeme mit und ohne verfügbarem SSL3 verhalten.
Jonesome Reinstate Monica
@ ShaneMadden, wenn ich Client-Code ändern muss. Was genau muss ich im Code ändern? Ich versuche, EnableProtocols in SSLSocket mit sslv3 nur dort zu setzen, wo es tatsächlich sslv3- und tlsv1-Werte hat.
Anita
@Anita Sie führen also einen Funktionsaufruf durch, bei dem nur SSLv3 aktiviert ist, aber weiterhin TLSv1 verwendet wird? Können Sie Ihre Frage mit dem aktualisieren, was Sie tun und was Sie sehen, was darauf hinweist, dass es nicht funktioniert?
Shane Madden

Antworten:

9

Haftungsausschluss : Aus meiner Sicht ist es keine gute Idee, das Verbindungsprotokoll auf SSLv3 umzustellen, es sei denn, Sie haben ein Gerät, das TLS nicht unterstützt.

Wenn Sie es wirklich brauchen, können Sie den Tomcat-Connector zwingen, das SSLv3-Protokoll zu verwenden. In der Connector-XML-Konfiguration:

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector protocol="HTTP/1.1" port="8443" ... sslProtocol="SSLv3"/>

Das sslProtocolAttribut akzeptiert die SSLContextin der Java-Dokumentation definierten Algorithmusnamen . Der Standardwert ist TLS.

Die Dokumentation zum HTTP-Connector finden Sie auch hier: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

AKTUALISIEREN

Es scheint möglich zu sein, die autorisierten Protokolle für SSL und TLS mit der Java-Systemeigenschaft anzugeben https.protocols( siehe hier ). Sie können Ihre Anwendung mit starten

java -Dhttps.protocols="SSLv3" ... -jar myapp.jar
Jcs
quelle
Danke für den Vorschlag @Jcs. Meine Anforderung ist es, das Protokoll auf Java / JRE-Ebene auf SSL v3 oder TLS1 zu ändern. Nicht auf Kater-Ebene. Denn morgen muss ich das vielleicht auch für jeden Webserver tun.
Wenn Sie "auf Java / JRE-Ebene" sagen, meinen Sie global für eine JVM (zum Beispiel mit einer Umgebung oder einer JVM-Variablen) oder auf programmatische Weise (dh den Java-Code, der eine SSLv3-SSLSocketFactory erstellt)?
Ja, ich muss es global für JVM tun. Ich habe versucht, TLS v1 unter dem Java-Kontrollfeld zu deaktivieren. Aber kein Glück. Die SSL-Kommunikation zwischen Client und Server verwendet standardmäßig TLS v1.
Zu Ihrer Information, ich habe versucht, sslProtocol = "SSLv3" in das Connector-Tag meines Tomcat-Servers.xml einzufügen, und habe meinen Tomcat-Server neu gestartet. Die SSL-Kommunikation zwischen Client und Server erfolgt jedoch weiterhin über TLS v1 :(
Ich aktualisiere den Beitrag mit einer anderen Lösung unter Verwendung der https.protocolSystemeigenschaft. Aber ich habe es nicht versucht.