Ошибка подключения к SSL - Delphi 7 Indy 9 - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь POST к веб-службе https с Delphi 7. Первоначально ошибка была «Невозможно загрузить библиотеку SSL». Поэтому поместил ssleay32.dll и libeay32.dll (из indy_openssl096k.zip в https://indy.fulgan.com/SSL/Archive/) в папку, содержащую мой исполняемый файл.

Теперь ошибка «Ошибка подключения к SSL». В исключении я также использовал функцию WhichFailedToLoad (), и ниже также сообщается: «Не удалось загрузить: EVP_md5 X509_digest X509_NAME_ha sh»

На разных сайтах, как я понял, вышеуказанные функции являются частью libeay32.dll. , Но почему это все еще сообщается как FailedToLoad?

Я видел предложения, что обновление до Indy10 может решить эту проблему. Но приложения, над которыми я работаю, используют функции Indy на большом количестве модулей, и я не хочу вызывать никаких проблем, если обновление Indy завершится неудачно. Есть ли в любом случае, чтобы решить эту ошибку с Indy9. Любая помощь очень ценится.

Я пытался найти решение в течение последних нескольких дней и не могу найти его. Может ли кто-нибудь любезно помочь мне, пожалуйста?

Мой код

      Protocol := TIdHTTP.Create(nil);
      try
        jsonToSend := TStringList.create;
        Id_HandlerSocket := TIdSSLIOHandlerSocket.create(nil);
        Id_HandlerSocket.SSLOptions.Method := sslvTLSv1;
        Id_HandlerSocket.SSLOptions.Mode := sslmClient;
        Id_HandlerSocket.SSLOptions.VerifyMode := [];
        Id_HandlerSocket.SSLOptions.VerifyDepth := 0;
        try
           jsonToSend.Add('{"Branch":"' + branch + '", "Country":"' + country + '"}');
           Protocol.IOHandler := Id_HandlerSocket;
           Protocol.Request.ContentType := 'application/json';
           Protocol.Request.Accept := '*/*';
           Protocol.Post(ServerURL,jsonToSend);
        except
          on E:EIdOSSLConnectError do
          begin
            showmessage(E.Message);
            showmessage('Failed to Load: ' + IdSSLOpenSSLHeaders.WhichFailedToLoad);
          end;
        end;
      finally
        Protocol.Destroy;
        Id_HandlerSocket.Free;
        jsonToSend.Destroy;
      end;
...