Question

Je n'ai pas une bonne connaissance des principes de SSL, mais je veux juste le cryptage au travail pour moi. J'ai un DB et un utilisateur avec « EXIGER X509 » spécifié. Les certificats nécessaires ont été créés comme décrit dans docs MySQL, et bien le travail -. I peuvent se connecter au serveur de la ligne de commande Windows

Le problème se pose, lorsque je tente de faire la même chose de mon programme en utilisant MySQL Client API (sans SSL, le programme fonctionne aussi très bien). L'unité utilisée est: http://www.audio-data.de/mysql.html.

Ce sont mes voies d'action: 1) si je viens d'ajouter appel mysql_ssl_set () (avec params appropriées) avant mysql_real_connect (), le dernier donne Erreur de connexion SSL générique. 2) la documentation de MySQL en fr / mysql-ssl-set.html dire, que la fonction retourne toujours 0. Mais quand je vérifié que, il est apparu que le nombre 11150848. Ensuite, je l'ai écrit comme le résultat que:

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

... et répété la ligne 8 fois. A chaque fois il est revenu un nombre légèrement plus grand - 11158528, 11158784, 11159040, ... et deux zéros pour les deux derniers appels

.

Après quoi mysql_real_connect () a finalement réussi! Le programme a même réussi à exécuter certaines requêtes, le retour des résultats corrects pour eux (je sais que les données), mais il est écrasé avec une violation d'accès: écriture d'adresse ... à un endroit. Le point accident a varié entre pistes et de légères modifications au code.

Il ressemble beaucoup à un problème d'incompatibilité de version. J'ai essayé des bibliothèques à la fois les installations MySQL 5.0 et 5.1 Windows. (Le serveur est 5.1 et fonctionne sous Linux à distance, mais 5.0 programmes mysql-client ne sont pas des problèmes lorsque SSL se connecter à), mais sans succès

Quelqu'un est-il au courant de la question? Merci beaucoup pour l'aide et désolé pour les erreurs dans la question.

Était-ce utile?

La solution

Comme je vois la déclaration de mysql_ssl_set est incorrecte. Il est déclaré:

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

Mais le mysql.h contient:

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

Cela explique la poubelle de la valeur de retour, l'AV et ainsi de suite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top