Verschlüsselungsverfahren für MySQL.

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
chris_otto
Beiträge: 3
Registriert: Mo 15. Aug 2011, 22:01

Verschlüsselungsverfahren für MySQL.

Beitrag von chris_otto »

Hallo Leute,
wer kann mir helfen? Ich möchte per Programm eine verschlüsselte Verbindung mit MySQL-Datenbank, entweder über das Internet oder Netzwerk aufbauen. Welche Verschlüsselungsverfahren gibt es? Gibt es auch dafür ein Package für Lazarus?
Wie wird so ein Beispiel Code aussehen?
Im Voraus vielen Dank, für alle, die mir helfen und Info geben.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von mschnell »

Geht ssl nicht ? ( http://de.wikipedia.org/wiki/Transport_Layer_Security" onclick="window.open(this.href);return false; )

Da sollte das Programm auf beiden Seiten nicht viel von merken. Du brauchst also nix programmieren oder in Lazarus einbauen.

-Michael

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von Antrepolit »

Nicht jeder Provider unterstützt den Zugang externer Programme zur MySQL Datenbank. Wenn du also eine MySQL-Datenbank im Paket von bplaced o.ä. Anbietern hast, wird das schwierig.
Grüße, Antrepolit

care only if your os is really burning

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von af0815 »

Ev. die Einträge selbst verschlüsseln und dann erst in die DB Speicher. Mal ansehen wie die Software Strip light bei iTunes das macht, die veschlüsseln auch in die DB.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

chris_otto
Beiträge: 3
Registriert: Mo 15. Aug 2011, 22:01

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von chris_otto »

mschnell hat geschrieben:Geht ssl nicht ? ( http://de.wikipedia.org/wiki/Transport_Layer_Security" onclick="window.open(this.href);return false; )

Da sollte das Programm auf beiden Seiten nicht viel von merken. Du brauchst also nix programmieren oder in Lazarus einbauen.

-Michael
Ich muss sagen, ich benutze Zeos. Ich weiß leider nicht, wie das mit ssl funktoniert. Wie kann ich das einstellen oder was muss ich machen?

@Antrepolit;
Nein, es geht nicht um bplaced.,

@af0815;
Wie geht das, was du mir vorgeschlagen hast?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von mschnell »

chris_otto hat geschrieben: Ich weiß leider nicht, wie das mit ssl funktoniert. Wie kann ich das einstellen oder was muss ich machen?
ssl verschlüsselt die Übertragung zwischen zwischen den verbundenen TCP/IP-Ports der beiden Rechner. Ich denke, auf der "Software"-Seite der Ports braucht da gar nichts gemacht werden Außer auf der MySQL-Seite den richtigen Server-Port anzumelden und auf der Client-Seite die richtige Port-Nummer mit der IP-Adresse des Servers anzugeben. Die Konfiguration muss im TCP/IP - Subsytem des Betriebssystems erfolgen (ich weiß aber nicht, wie). Natürlich muss das auf beiden Seiten (Rechnern) passend erfolgen.

Wie wär's mit Google: http://letmegooglethatforyou.de/?q=mysql+ssl" onclick="window.open(this.href);return false;

-Michael

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von EgonHugeist »

@chris_otto + MSchnell

Mit Zeos funktioniert das wunderbar. Ihr müßt den SSLKey/Cipher/Zertifikat in die TZConnection.Properties kopieren damit der handshake klappt. Öffnet die unit ZDbcMySQLConnection.Pas sucht die open procedure. In dieser findet ihr alle nötigen Angaben, welche für die SSL verbindung notwendig sind. Ich kann mir nicht vorstellen, das die Verschlüsselung der Datenbank selber vs. permanente Erreichbarkeit einen Sinn ergibt...

Michael
ZeosDevTeam

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von af0815 »

chris_otto hat geschrieben:
@af0815;
Wie geht das, was du mir vorgeschlagen hast?
Bin am Thema vorbei, wäre nur dann richtig, wenn du die Daten und nicht die Verbindung verschlüsselt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von hde »

Tja, wenn ich das richtig sehe, dann ist der erste Schritt, dass man sich erst mal ein Zertifikat kaufen oder mit openssl machen muss.

Oder sehe ich das falsch?

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von EgonHugeist »

hde hat geschrieben:Tja, wenn ich das richtig sehe, dann ist der erste Schritt, dass man sich erst mal ein Zertifikat kaufen oder mit openssl machen muss.

Oder sehe ich das falsch?
Hi hde,

Das siehst du richtig. Hier helfen ebenfalls die MySQL Dokumentationen weiter. Ihr könntet natürlich auch selber diverse minder komplexe cipher Algorythmen einfliessen lassen. Im Jedi project ist ein relativ guter verhanden, glaube der nutzt die Cezar Verschlüsselung, für diese benötigt ihr einen cipher string. Dies bedeutet jedoch sich von den Db-Controls zu verabschieden, Hammer Aufwand, nahezu unmögliche Änderungen des cipher und alles wird dann auch noch alles verschlüsselt in der Db abgelegt. Dieses Konzept würde jedoch mit wirklich allen engienes gleichzeitig aufgehen. Aber über wirkliche Sicherheit brauchen wir dann auch nicht wirklich im gleichen Masstab zu SSL nachdenken. Nur ne dumme Idee.

Michael
ZeosDevTeam

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von hde »

EgonHugeist hat geschrieben:Dies bedeutet jedoch sich von den Db-Controls zu verabschieden, Hammer Aufwand,
also ich muss diesen Aufwand nicht unbedingt haben :wink:
EgonHugeist hat geschrieben: Mit Zeos funktioniert das wunderbar.
wenn man weiß wie's geht scheint's zu funktionieren .. jedenfalls die ersten Test's
Dank @Michael

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von EgonHugeist »

@hde

Gerne geschehen. Ich weis unsere Doku ist mangelhaft, daher muß man schon wissen, daß SSL von Zeos unterstützt wird...

Und wenn was mit unsere Compo nicht hinhaut... Weist ja wo du mich findest.

Michael

Ahem hab noch was. Ein echter FPC Dataset Experte hat mal auf mein Anfragen unser Test-Suites laufen lassen. Resultat waren dann 7 Bugreports am FPC, welche dann ab 2.7.0 verfügbar sein sollten. Infos giebs im Zeos-Forum im neuesten MsSQL thread und im \testing-egonhugeist thread ab seit 15 glaub ich. Bis denne....
ZeosDevTeam

chris_otto
Beiträge: 3
Registriert: Mo 15. Aug 2011, 22:01

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von chris_otto »

Vielen Dank für alle die mir angewortet haben. :D
Was ich nicht verstehe, wo bekomme ich das Zertifikat oder ein cipher string her?
Vielen Dank für euere Geduld für SSL-Anfänger. :oops:

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von mse »

chris_otto hat geschrieben:Was ich nicht verstehe, wo bekomme ich das Zertifikat oder ein cipher string her?
Selbst unterschriebene Zertifikate können mit OpenSSL erzeugt werden, dazu gibt es viele HOWTO's, z.B.
http://www.openssl.org/docs/HOWTO/certificates.txt
http://www.madboa.com/geek/openssl/
http://blog.didierstevens.com/2008/12/3 ... h-openssl/
...
Vermutlich solltest du dich auch in die Thematik der asymmetrischen Kryptographie mit "öffentlichen Schlüsseln" einlesen.
http://de.wikipedia.org/wiki/Asymmetris ... yptosystem
Wo hast du "cipher string" gelesen? Das kann verschiedenes bedeuten.

Martin

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Verschlüsselungsverfahren für MySQL.

Beitrag von hde »

@chris_otto,
ich kann dir kurz sage, was ich gemacht habe:
Auf einem Client von openssl.org herunterladen. Anleitungen gibt es viele, bei mir hat keine funktioniert. Aber nach viel, viel "try and error" hab ich halbwegs begriffen, wie's geht. (die beste Anleitung fand ich später bei mySQL) und Zertifikate anlegen und "absegnen". Zertifikate auf Server und Clients kopieren.
In my.ini oder .cfg unter [CLIENT] eintragen:
# testweise fuer ssl
ssl-ca="C:/Programme/MySQL/MySQL Server 5.5/certs/cacert.pem"
ssl-cert="C:/Programme/MySQL/MySQL Server 5.5/certs/client-cert.pem"
ssl-key="C:/Programme/MySQL/MySQL Server 5.5/certs/client-key.pem"
und unter [mysqld] .. (bei mir)
# testweise fuer ssl
ssl-ca="C:/Programme/MySQL/MySQL Server 5.5/certs/cacert.pem"
ssl-cert="C:/Programme/MySQL/MySQL Server 5.5/certs/server-cert.pem"
ssl-key="C:/Programme/MySQL/MySQL Server 5.5/certs/server-key.pem"
einem user zufügen:
GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'localhost' IDENTIFIED BY 'topsecret' REQUIRE X509; (anpassen)
und unter Optionen in ZConnect (Zeos) eintragen:
MYSQL_SSL=true
MYSQL_SSL_KEY=C:\certs\client-key.pem
MYSQL_SSL_CERT=C:\certs\client-cert.pem
MYSQL_SSL_CA=C:\certs\cacert.pem
MYSQL_SSL_CAPATH=C:\certs
MYSQL_SSL_CIPHER=ALL:-AES:-EXP
codepage=utf8
Server neu starten und einloggen .. sollte gehen .. :wink:

Antworten