سؤال

أحاول الاتصال بمستندات Google (بعد رمز الراحة الممتاز Marco Cantu الممتاز) ولكني أحصل على أخطاء SSL التالية:

1) إذا كنت أستخدم DLLs SSL من Openssl-0.9.8i-i386-Win32.zip أحصل على الخطأ:

"تعذر تحميل مكتبة SSL"

2) إذا استخدمت SSL DLLs من Indy_openssl096m.zip أحصل على الخطأ:

"خطأ في الاتصال مع SSL"

3) إذا استخدمت SSL DLLs من Openssl-0.9.8h-i386-win32-indy-intrawebedition.zip أحصل على الخطأ:

"تعذر تحميل مكتبة SSL"

لقد بحثت الآن هذا وهناك الكثير من التوصيات مع روابط ميتة DLLs حول، بما في ذلك الروابط على تجاوز سعة مكدس. أظن أنني بحاجة إلى العثور على DLLs SSL المتوافقة مع إصدار Indy الذي أستخدمه.

سؤالي هو، هل يعرف أحد بالضبط ما هي SSL DLLs متوافقة مع Delphi 2006 & Indy 10.1.5؟

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

المحلول

كان لدي نفس المشكلة حتى بعد الترقية إلى Indy 10.2.3 وحاولت كل إصدار مختلف من ملفات "Libeay32.dll" و "Ssleay32.dll" التي يمكنني العثور عليها ... مثل Matt أنا دائما حصلت على واحدة من الأخطاءتين : "تعذر تحميل مكتبة SSL" أو "خطأ في الاتصال ب SSL" مع شيء مثل "خطأ: 00000006: Lib (0): func (0): evp lib" ...

كنت سعيدا جدا عندما أقوم بتغيير tidssliohandlersocketopenssl.ssloptions.method إلى SSLVSSLV23 وبدأ كل شيء في العمل.

مزيد من الأبحاث قليلا وأفهم بسرعة في أي وقت حصلت على الخطأ "تعذر تحميل مكتبة SSL" كنت أستخدم الإصدار الخاطئ من ملفات DLL وفي أي وقت لدي "خطأ في الاتصال ب SSL" مع شيء مثل "خطأ: 00000006: Lib (0): func (0): EVP Lib "كنت أستخدم قيمة SSLOptions.method خاطئة.

معلومات أخرى: أنا أستخدم Delphi 2006، Indy 10.2.3 وأنا Runnin على WinXP Pro

هذا تسبب لي الكثير من الألم، وآمل أن ينقذ هذا المنصب شخص ما بعض الوقت.

نصائح أخرى

يمكنك اللجوء إلى بعض المحاكمة والخطأ باستخدام التنزيلات من موقع فولجان.

قد ترغب في التفكير في تحديث نسختك من Indy واستخدام أحدث DLL Openssl.

FWIW، منذ أن أمضيت الكثير من الوقت في الحصول على شيء HTTPS هذا للعمل، إليك نتائج جهودي الناجحة.

1- دلفي 7.

2- indy9.0.19_d7.exe.

3- idssliohandlersocket1.ssloptions.method: = sslvtlsv1؛ أو،

idssliohandlersocket1.ssloptions.method: = sslvtlsv23؛ أو،

idssliohandlersocket1.ssloptions.method: = sslvtlsv3؛

حاولت Indy10.0.76_d7.exe و Indy10.1.5_d7.exe تحت Delphi 7 ولا يمكنني الحصول عليها للتثبيت بشكل صحيح، ناهيك عن الحصول على HTTPS للعمل. أحصل على رسالة سيئة السمعة "وحدة idsyswin32 تم تجميعها بإصدار مختلف من IDException.eidexception." لقد بحثت عن حل لهذه المشكلة على الويب ولم أستطع العثور على الأحمال الأخرى من الآخرين كان له نفس الرسالة.

موقع مفيد لاختبار https هو https://msp.f-secure.com/web-test/common/test.html.

هنا هو مصدري:

procedure TForm1.ButtonHTTPSClick(Sender: TObject);
var
  IdHTTP1: TIdHTTP;
  ParamStringList: TStringList;
  s1: String;
  MemoryStream1: TMemoryStream;
  IdSSLIOHandlerSocket1:  TIdSSLIOHandlerSocket;
begin //  ssl works fine must have Indy version indy9.0.19_d7.exe and must use option  sslvSSLv23

  Screen.Cursor := crHourGlass;
  IdHTTP1 := TIdHTTP.Create(nil);
  IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocket.Create(nil); 
  IdHTTP1.IOHandler := IdSSLIOHandlerSocket1;

//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; // sslvSSLv1 works fine
    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3; // sslvSSLv3 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23; // sslvSSLv23 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;   sslvSSLv2 does not work
    IdSSLIOHandlerSocket1.SSLOptions.Mode := sslmUnassigned;
    IdSSLIOHandlerSocket1.SSLOptions.VerifyMode := [];
  IdSSLIOHandlerSocket1.SSLOptions.VerifyDepth := 0;

  ParamStringList := TStringList.Create;
  MemoryStream1 := TMemoryStream.Create;
  s1 := IdHTTP1.Post('https://msp.f-secure.com/web-test/common/test.html', ParamStringList);
  MemoryStream1.Write(s1[1], Length(s1));
  MemoryStream1.Position := 0;
  MemoryStream1.SaveToFile('c:\temp\MemoryStream1.txt');
  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile('c:\temp\MemoryStream1.txt');
  MemoryStream1.Free;
  ParamStringList.Free;
  IdSSLIOHandlerSocket1.Free;
  IdHTTP1.Free;
  Screen.Cursor := crDefault;
end;

بقدر ما أدرك إصدارات أكثر حداثة من أعمال إندي مع ثنائيات Openssl القياسية.تحميل من هنا. وبعد أنتجنا تطبيق عميل Delphi FTP منذ فترة من الوقت باستخدام Indy مع اتصالات SSL وأنا متأكد من أننا قد شحنت DLLs Openssl الحالي.

تحرير: فحص فقط دليل التطبيقات و DLLs التي استخدمناها هي Openssl 0.9.8.2 (3-Aug-06). (إنه تطبيق قديم)

تحرير 2: وقد نسخت للتو 0.9.8 كيلوغرام مؤخرا أكثر من 0.9.8 ألف شخصا ويعملون بشكل جيد أيضا.

ابحث عن إصدار Indy الذي تستخدمه. COPY DLLS INDY LIBEAY32.DLL، LIBSSL32.DLL و SSLEAY32.DLL في مجلد Windows / System 32.IT سيحل الخطأ "تعذر تحميل مكتبة SSL"

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