سؤال

ليس لدي معرفة جيدة بمبادئ SSL ، ولكن أريد فقط أن يعمل التشفير من أجلي. لدي DB ومستخدم مع "متطلب X509" المحدد. تم إنشاء الشهادات اللازمة كما هو موضح في مستندات MySQL ، وأعمل بشكل جيد - يمكنني الاتصال بالخادم من سطر أوامر Windows.

تنشأ المشكلة ، عندما أحاول أن أفعل الشيء نفسه من برنامجي باستخدام MySQL Client API (بدون SSL ، يعمل البرنامج أيضًا بشكل جيد). الوحدة المستخدمة هي: http://www.audio-data.de/mysql.html.

هذه هي مسارات الإجراء الخاصة بي: 1) إذا قمت فقط بإضافة mysql_ssl_set () استدعاء (مع params المناسبة) قبل mysql_real_connect () ، فإن آخر واحد يعطي خطأ توصيل SSL عام. 2) يقول مستندات MySQL في EN/MySQL-SSL-SET.HTML ، إن الوظيفة تعود دائمًا 0. لكن عندما راجعت ذلك ، بدا أن النتيجة هي الرقم 11150848. ثم كتبتها على هذا النحو:

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

... وكرر الخط 8 مرات. في كل مرة عادت إلى عدد أكبر قليلاً - 11158528 ، 11158784 ، 11159040 ، ... واثنان من المكالمتين الأخيرين.

بعد ذلك نجحت mysql_real_connect () في النهاية! تمكن البرنامج حتى من تنفيذ بعض الاستعلامات ، وإرجاع النتائج المناسبة لهم (أعرف البيانات) ، ولكن بعد ذلك تحطمت مع انتهاك للوصول: اكتب العنوان ... في مكان ما. تباينت نقطة التحطم بين الركض والتغييرات الطفيفة في التعليمات البرمجية.

يشبه إلى حد كبير مشكلة عدم توافق الإصدار. جربت المكتبات من كل من تثبيتات Windows MySQL 5.0 و 5.1 (الخادم 5.1 ويعمل تحت Linux عن بُعد ؛ ومع ذلك ، فإن برامج MySQL-Client لا تعاني من مشاكل عند توصيل SSL به) ، ولكن دون أي نجاح.

هل أي شخص على دراية بهذه القضية؟ شكرا جزيلا للمساعدة وآسف على الأخطاء في السؤال.

هل كانت مفيدة؟

المحلول

كما أرى إعلان mysql_ssl_set غير صحيح. تم إعلانه:

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

لكن mysql.h يحتوي على:

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

وهذا ما يفسر القمامة في قيمة العودة ، AV's وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top