mySQL, SSL und eine Java Applikation

Profiler

Grünschnabel
Hallo Leute, ich bin neu hier, aber ich hoffe ich poste das hier im richtigen Forum.

Ich habe folgendes Problem:
Ich bin zur Zeit dabei meine Java Applikation zu testen, welche über ein Login-Formular die Echtheit eines Nutzers bestätigen soll, aber da diese, nicht wie bei Webservern üblich, über den localhost auf die von mir verwendete, in XAMPP integrierte, mySQL-Datenbank zugreift habe ich vor das ganz über SSL zu verschlüsseln.

Ohne SSL funktioniert das ganze problemlos, aber sobald ich Client-seitig SSL erzwinge bekomme ich folgende Fehlermeldung:

Code:
SSL Connection required, but not supported by server.

Eigentlich ist klar, was das bedeutet, aber ich finde in keiner Konfigurationsdatei eine entsprechende Variable und Google ist was das angeht auch sehr zurückhaltend; wenn es mal was ausspuckt, dann nur für Linux. Allerdings verwende ich als Entwicklungsumgebung Windows 7.

Hat jemand Ahnung von mySQL in Verbindung mit SSL und kann mir helfen?
Ich danke schonmal im Vorraus :)
 
Danke für die Antwort, aber das ist nicht das, was ich suche.
In den Examples wird nur erklärt, wie man ein Zertifikat erstellt bzw. OpenSSL installiert, aber beides ist nicht das Problem. Zum einen verwende ich keine Zertifikate:

Code:
verifyServerCertificate=false

Und zum anderen ist laut phpMyAdmin sowohl SSL als auch OpenSSL installiert, nur werden beide als disabled angezeigt. Ich kann das aber, meines Wissens nach, nicht direkt über phpMyAdmin ändern und die Konfigurationsdatein helfen mir nicht weiter.

Aber wenn das ganze Gedöns schon installiert ist muss man es ja auch benutzen können, nur meine Frage ist wie :)
 
SSL basiert aber nun mal auf Zertifikaten. Das kann man sich nicht aussuchen. verifyServerCertificate bedeutet lediglich, dass das Zertifikat nicht auf seine Gültigkeit hin überprüft werden soll, nicht aber, das man keines braucht.

In den User-Comments steht, wie man weiter vorgehen soll, nach dem man das Zertifikat erstellt hat:

Code:
In order to run MySQL as Service on Windows platform with SSL enabled just add this lines in [ mysqld] section:

ssl-key=C:/Program Files/MySQL/MySQL Server 5.0/cert/server-key.pem
ssl-cert=C:/Program Files/MySQL/MySQL Server 5.0/cert/server-cert.pem
ssl-ca=C:/Program Files/MySQL/MySQL Server 5.0/cert/ca-cert.pem

Where "C:/Program Files/MySQL/MySQL Server 5.0/cert/" is a path to certs described above

Hier noch mal eine 5-Schritte-Anleitung: http://www.chriscalender.com/?p=448
 
Zuletzt bearbeitet:
Okey, danke für deine Hilfe, eine Verbindung kann ich nun herstellen, aber diese scheint sofort wieder abzubrechen, denn ich bekomme die Meldung:

Code:
Communications link failure

The last packet successfully received from the server was 2 milliseconds ago.  The last packet sent successfully to the server was 2 milliseconds ago.

Aber auch dies scheint ein reines SSL-Problem zu sein, denn wenn ich die Parameter für die sichere Verbindung aus dem Query entferne funktioniert alles wunderbar.

Auch wenn ich den Befehl

Code:
autoReconnect=true

benutze hilft das nicht. Ich habe in einem anderen Forum den Hinweis gefunden, dass es möglicherweise an der größe der gesendeten Daten liegt aber auch

Code:
useCompression=true

hilft nicht.

Weiß jemand Rat? Danke nochmal für Eure schnelle Hilfe bis jetzt, ist ein super Forum :)
 
Guten Morgen,

verwendest du rein zufällig einen Internet-Proxy? Ich hatte mal ein ähnliches Problem mit dem JDBC-Treiber für MySQL, da war der eingestellte Proxy im Internet Explorer schuld. Frag nicht warum, ich hab auch keine Ahnung, was ein JDBC-Treiber mit dem Proxy für HTTP zu schaffen hat ;-)

EDIT: Kannst du mal den kompletten Exception-Stacktrace posten?
 
Zuletzt bearbeitet:
Guten Morgen auch :)

Also ich benutze keinen Proxy. Ich weiss, dass manchmal Sachen die eigentlich nichts miteinander zu tun haben, für Probleme verantwortlich sind, aber dann könnte es ja auch irgendwie alles sein. ;)

Der Stacktrace sieht so aus:

Code:
exception: Communications link failure

The last packet successfully received from the server was 2 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago.
exception: java.net.SocketException: Software caused connection abort: recv failed
exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 2 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:105)
	at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:5150)
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1689)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2389)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2422)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2207)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at MySQLConnection.Connection(MySQLConnection.java:59)
	at MySQLConnection.setDate(MySQLConnection.java:147)
	at thread.run(thread.java:44)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at sun.security.ssl.InputRecord.readFully(Unknown Source)
	at sun.security.ssl.InputRecord.read(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:90)
	... 20 more

Danke nochmal für deine Hilfe :)
 
Zuletzt bearbeitet:
Also eigentlich kann es nicht an der Version liegen. Ich arbeite mit v. 5.1.19 und das scheint, laut MySQL der aktuelle Treiber zu sein.

Die *.jar liegt bei mir in:

Code:
[...]\Java\jre7\lib\ext\

und außer dieser gibt es keine andere Version in dem Verzeichnis. Sollte ich noch wo anderes suchen?

Alternativ könnte ich eine ältere Version von dem Treiber bzw. von der RE installieren, aber da ist die Frage ob das hilft.
 

Neue Beiträge

Zurück