Ich habe keine guten Kenntnisse der SSL-Prinzipien, aber ich möchte nur, dass die Verschlüsselung für mich funktioniert. Ich habe eine DB und einen Benutzer mit "REQUIRE X509" angegeben. Die erforderlichen Zertifikate wurden wie in den MySQL-Dokumenten beschrieben erstellt und funktionieren gut - ich kann eine Verbindung zum Server über die Windows-Befehlszeile herstellen.Verbinden mit einem entfernten MySQL-Server von einem Delphi-Programm über SSL
Das Problem entsteht, wenn ich versuche, das gleiche aus meinem Programm mit MySQL Client API (ohne SSL, das Programm funktioniert auch gut). Die verwendete Einheit ist: http://www.audio-data.de/mysql.html.
Dies sind meine Aktionspfade: 1) Wenn ich nur mysql_ssl_set() -Aufruf (mit richtigen Parametern) vor mysql_real_connect(), die letzte gibt generische SSL Connection Error. 2) die MySQL-Dokumentation in en/mysql-ssl-set.html sagen, dass die Funktion immer 0 zurückgibt. Aber als ich das überprüfte, schien das Ergebnis die Nummer 11150848. Dann schrieb ich es so:
showmessage(inttostr(mysql_ssl_set(mys, '.\certs\client-key.pem', '.\certs\client-cert.pem', '.\certs\ca-cert.pem', nil)));
... und wiederholte die Zeile 8 Mal. Jedes Mal gab es eine etwas größere Zahl zurück - 11158528, 11158784, 11159040, ... und zwei Nullen für die letzten beiden Aufrufe.
Danach war mysql_real_connect() endlich erfolgreich! Das Programm hat es sogar geschafft, einige Abfragen auszuführen, korrekte Ergebnisse für sie zurückzugeben (ich kenne die Daten), aber dann ist es mit einer Zugriffsverletzung abgestürzt: Adresse schreiben ... irgendwo. Der Absturzpunkt variierte zwischen Läufen und leichten Codeänderungen.
Es ähnelt einem Versionsinkompatibilitätsproblem. Ich probierte Bibliotheken von MySQL 5.0 und 5.1 Windows-Installationen (der Server ist 5.1 und läuft unter Linux remote; jedoch haben 5.0 mysql-Client-Programme keine Probleme, wenn SSL-Verbindung zu ihm), aber ohne Erfolg.
Ist jemand mit dem Problem vertraut? Vielen Dank für die Hilfe & Entschuldigung für die Fehler in der Frage.
Das hat es getan. Du hast wahrscheinlich viel Zeit gespart. Tnanks. – hhyhbpen