Java + MySQL + SSL = Haarausfall

Cyborg

Grünschnabel
Hallo Leute,

ich habe mich heute bei euch registriert, da ich mich seit ein paar Tagen mit folgendem Problem rumschlage:

Ich möchte ein SQL-Querys verschlüsselt an meinen MySQL Datenbank senden und auch wieder empfangen.

Da ich häufiger nach einem Problem das Internet durchsuche und auch öfters bei euch im Forum lande (wodurch ich nebenbei gesagt, zu 80 % mein Problem lösen kann), möchte ich nun selbst einmal ein Problem vorstellen und hoffe, dass mir hierbei wieder geholfen werden kann.

Wie weit bin ich?
Ich habe mich hauptsächlich an die MySQL Doku gehalten und mit Hilfe eines User-Comments ( Rahul Gupta ) erfolgreich die benötigen Zertifikate erstellen können.

Alle weiteren Schritte wie das Erstellen eines Users mit geeigneten Rechten, das Editieren der mysql.ini oder das Verbinden zur Datenbank über SSL haben zu 100% funktioniert. (Falls hier jemand schon scheitern sollte, kann er mich gerne daraufhin ansprechen)

Nur eben mein eigentliches Vorhaben (das Verbinden aus einem Java Programm), ging bis jetzt in die Hose.
Ich habe diverse Tutorials, Technicken, Methoden und Tricks angewendet, um wie ebenfalls in der MySQL Doku beschrieben, die von Java benötigten "keystore" und "truststore" Files zu erstellen.
Dies auch alles ohne Fehlermeldung.

Bevor ich euch jetzt mit Exceptions und Beispielcode überschütte, würde ich gerne wissen, ob es Leute gibt, die dieses Vorhaben schon realisiert haben.

So langsam glaube ich nämlich, dass das alles nicht so richtig funktioniert.

Wenn es jemanden gibt, der es praktisch schon druchgeführt hat, gebe ich auch gerne meine erstellen Zertifikate her um entsprechende "keystore" und "truststore" Files zu erzeugen.
 
Moin,
also ausprobiert hab ich das jetzt nich alles *weil mir unteranderem auch OpenSSL aufm Rechner fehlt*, aber laut der Doku und den darunterstehenden Comments sollte es mit ein paar Work-arounds schon laufen. Besonderst einer der Comments in deinem 2ten Link zeigt das du das Client-Cert mit dem CA-cert des Servers signieren musst ...
Ich kann mir den Sinn hinter dem Ganzen hier schon denken, aber man sollte sich überlegen wenns für deinen eigenen gebrauch ist ne art Proxy an beiden Seiten zu verwenden der den Stream verschlüsselt. Klar würde man so das Rad neu erfinden, aber ich bin der Meinung das es sowieso ein schlechtes Design ist wenn man Verbindungen zur Datenbank von außen zulässt.
 
Hey Spike,

danke für deine Antwort.
Die Comments bin ich wie gesagt schon ohne Erfolg durch.
Da es nur für einen kleinen privaten Zweck dienen soll (ja eigentlich nur um zu wissen, wie es funktioniert), möchte ich auch keine neuen Räder erfinden müssen :)

Wenn du es gerne ausprobieren möchtest, dann schicke ich dir meine Zertifikate auch gerne zu.
Dann brauchst du kein OpenSSL zu installieren.
 
was ich mich nur wundere : warum braucht man hierfür ein Client-Zertifikat ? Funktioniert SSL nicht nach dem Sinn das der Server sein öffentliches Zertifikat schickt, der Client ein Session-Key erzeugt und diesen verschlüsselt zum Server überträgt ? Oder trifft das nur HTTPS zu ?
Also sollte man sich hier erstmal fragen ob die Implementierung von MySQL SSL-konform ist.
Weil es nützt doch nichts alles nach SSL zusammenzubauen und zu dokumentieren wenn die Implementierung dann davon abweicht ...
Ich weis das SSL zwar auch Client-Authentifizierung kann, es aber eigentlich nicht notwendig ist da ja in aller Regel nur der Server authentifiziert werden soll.
 
Zurück