Frage

Ich habe keine gute Kenntnisse über SSL Prinzipien, sondern nur um die Verschlüsselung zu Arbeit für mich will. Ich habe einen DB und einen Benutzer mit „require X509“ angegeben. Die notwendigen Zertifikate erstellt wurden, wie in MySQL-Dokumentation beschrieben, und die Arbeit gut. - Ich kann auf den Server von Windows-Kommandozeile verbinden

Das Problem entsteht, wenn ich versuche, das gleiche von meinem Programm mit MySQL-Client-API zu tun (ohne SSL, das Programm funktioniert auch gut). Die verwendete Einheit ist: http://www.audio-data.de/mysql.html.

Das sind meine Handlungspfade: 1) wenn ich nur mysql_ssl_set () Aufruf (mit dem richtigen params) vor mysql_real_connect (), die letzten gibt generische SSL-Verbindungsfehler hinzufügen. 2) die MySQL-Dokumentation in en / mysql-ssl-set.html sagen wir, dass die Funktion immer 0 zurück Aber wenn ich das überprüft, schien es, dass das Ergebnis die Nummer 11150848. Dann schrieb ich es wie folgt aus:

showmessage(inttostr(mysql_ssl_set(mys, '.\certs\client-key.pem', '.\certs\client-cert.pem', '.\certs\ca-cert.pem', nil)));

... und die Linie 8-mal wiederholt. Jedes Mal ist es wieder eine etwas größere Zahl - 11158528, 11158784, 11159040, ... und zwei Nullen in den letzten zwei Anrufe

.

Nach dem mysql_real_connect () war schließlich erfolgreich! Das Programm verwaltet auch einige Abfragen ausführen, zurückgeben richtigen Ergebnisse für sie (ich weiß die Daten), aber dann stürzte es mit einer Zugriffsverletzung: Schreiben der Adresse ... an einem Ort. Der Absturz Punkt variierte zwischen den Läufen und geringfügigen Änderungen an Code.

Es sieht aus wie eine Version Kompatibilitätsproblem. Ich habe versucht, Bibliotheken sowohl von MySQL 5.0 und 5.1 Windows-Installationen. (Der Server 5.1 und läuft unter Linux remote, jedoch 5,0 mysql-Client-Programme haben keine Probleme, wenn die SSL-Verbindung zu), aber ohne Erfolg

Ist jemand vertraut mit dem Thema? Vielen Dank für die Hilfe und sorry für die Fehler in der Frage.

War es hilfreich?

Lösung

Wie ich die mysql_ssl_set Erklärung sehen ist falsch. Es wird erklärt:

function mysql_ssl_set(_mysql: PMYSQL; key, cert, ca, capath: PAnsiChar): longint; stdcall;

Aber die mysql.h enthält:

my_bool     STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
                      const char *cert, const char *ca,
                      const char *capath, const char *cipher);

Das erklärt, den Müll in Rückgabewert, AV ist und so weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top