Delphi could not load ssl library как исправить

I know this question has been asked before but none of the answers seem to be appropriate for this situation. I'm using a TIdHttp component with an SSL handler. My code is as follows: idHTTPCli...

I know this question has been asked before but none of the answers seem to be appropriate for this situation.

I’m using a TIdHttp component with an SSL handler. My code is as follows:

  idHTTPClient := TIdHTTP.Create(nil);
  ioHnd := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  ioHnd.DefaultPort := iSSL_PORT;
  ioHnd.SSLOptions.Mode := sslmClient;
  idHTTPClient.IOHandler := ioHnd;
  idHTTPClient.Request.AcceptEncoding := 'gzip,deflate,identity';
  idHTTPClient.Request.BasicAuthentication := False;

  try
    idHTTPClient.Post(FFQDN, stmRequest, stmResponse);
  except
    on E:Exception do
    begin
      if IdSSLOpenSSLHeaders.WhichFailedToLoad <> '' then
      begin
        AddMsg('Failed to load file ' + IdSSLOpenSSLHeaders.WhichFailedToLoad + '. ' + E.Message);
      end;
    end;
  end;

There are three versions of the ssleay32 and libeay32.dll files on the machine. One set is in the same folder as my executable (V1.0.0.5). One set is in the Apache bin folder (V0.9.8.20) and one set is in C:WindowsSysWOW64 (no version but dated 2003).

When the app starts it runs fine. But after a few days the Post call starts to fail with «Could not load SSL library». The files which fail to load are:

SSL_SESSION_get_id,SSL_COMP_get_compression_methods

Once this problem starts to happen it won’t go away until the app is restarted. Then it works fine again for another few days.

It would seem to me that for some reason the dlls being loaded change after a few days. How could this happen and what could I do to ensure the correct files are loaded every time?

0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

1

16.09.2016, 09:27. Показов 29719. Ответов 13

Метки 2, c, could not load, could not load ssl library, delphi 10, delphi 10 seattle, delphi dx10, delphi seattle, dx10, indy, indy 10, indy10, libeay32, mail, seattle, smtp, ssl, ssleay32, tidsmtp, с, сети (Все метки)


И снова здравствуйте форумчане, у меня появилась ошибка «Could not load SSL library» как её исправить читал, гуглил но предложения не помогли. Я принимал попытки с библиотеками такими как: «libeay32.dll» & «ssleay32.dll» (Не помогло). Пытался обновить indy, с этим все очень плохо (Не смог). Если есть у кого исходник под DX10 буду очень благодарен! Или если у вас есть предложения что да как предпринять.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Хитрая блондиночка $)

1470 / 985 / 399

Регистрация: 21.12.2015

Сообщений: 3,785

16.09.2016, 09:30

2

Цитата
Сообщение от Sd2030
Посмотреть сообщение

принимал попытки с библиотеками

Какие попытки? ставил последние версии?

Цитата
Сообщение от Sd2030
Посмотреть сообщение

Пытался обновить indy

А какая же у тебя версия?



0



Sd2030

0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

16.09.2016, 09:51

 [ТС]

3

Indy: 10.6.2.5311
Принимал попытки с библиотеками такими как: «libeay32.dll» & «ssleay32.dll»

Добавлено через 16 минут

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    
    idSMTP1.Host:= 'smtp.mail.ru'; //Smtp for mail.ru is: smtp.mail.ru
    idSMTP1.Port:=25; // port 25 ot 465
 
    // установка сообщения
    idSMTP1.Username:='Mail';
    idSMTP1.Password:='Pass';
     idSMTP1.AuthType:=satDefault;
    idMessage1.From.Text:='Mail';
    idMessage1.Subject:='Тема'; // тема
    idMessage1.From.Address:='Mail'; // адрес отправителя
    idMessage1.Recipients.EMailAddresses:='Recipients_Mail';
    idMessage1.Body.Text:='test'; // текст сообщения
 
 
    idSMTP1.Connect;
    idSMTP1.Send(idMessage1);
    ShowMessage('Письмо отправлено!');
    idSMTP1.Disconnect;



0



Эксперт Pascal/Delphi

4881 / 2754 / 848

Регистрация: 04.10.2012

Сообщений: 10,039

16.09.2016, 11:25

4

Sd2030, по сто раз нужно обсуждать одно и то же? Вот тема https://www.cyberforum.ru/post9540894.html

Добавлено через 1 минуту
Учитесь читать темы, прежде чем поднимать новые



0



0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

16.09.2016, 12:23

 [ТС]

5

Я читал эту тему и напишу ещё раз (не помогло! )

Добавлено через 4 минуты

Цитата
Сообщение от droider
Посмотреть сообщение

Смотрел, юзал, читал как и эту статью, не помогло!



0



Эксперт Pascal/Delphi

4881 / 2754 / 848

Регистрация: 04.10.2012

Сообщений: 10,039

16.09.2016, 12:44

6

Sd2030, всем помогло Вам не помогло?



0



0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

16.09.2016, 13:36

 [ТС]

7

Есть такое.

Добавлено через 2 минуты

Цитата
Сообщение от droider
Посмотреть сообщение

Sd2030, всем помогло Вам не помогло?

А разве длл библиотеки нужны не для synaps’a?



0



Эксперт Pascal/Delphi

4881 / 2754 / 848

Регистрация: 04.10.2012

Сообщений: 10,039

16.09.2016, 13:51

8

Sd2030, они нужны в данном случае. В архиве, который я приложил выше, лежат рабочие dll. Проект в архиве работает без проблем. Неужели трудно сделать всё по аналогии?

Добавлено через 1 минуту

Цитата
Сообщение от Sd2030
Посмотреть сообщение

исходник под DX10 буду очень благодарен

тот же исходник работает под XE10.

Добавлено через 1 минуту

Не по теме:

Будьте чуть-чуть внимательнее, люди!

Не по теме:

Приложил по сто раз скриншот почтового ящика, готовый исходник с рабочими библиотеками и, всё равно, нагло начинают утверждать, что «не помогает», «не работает» и т.д :D



1



0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

16.09.2016, 14:00

 [ТС]

9

droider Хорошо, буду дома попробую ещё раз, после отпишусь.



0



587 / 454 / 147

Регистрация: 09.12.2013

Сообщений: 2,385

Записей в блоге: 2

16.09.2016, 16:39

10

Лучший ответ Сообщение было отмечено Sd2030 как решение

Решение



1



Sd2030

0 / 0 / 0

Регистрация: 04.01.2016

Сообщений: 20

17.09.2016, 11:50

 [ТС]

11

В общем ошибку с библиотеками исправить получилось, библиотеки помогли! Немного код подправил, 2-3 ошибки вылезали но в итоге все получилось! Чуть позже скинул код который вышел, вдруг поможет!
Наверное было глупо задавать еще одну тему (Так оно и есть), но поймите и меня, библиотеки я смотрел которые были предоставлены вами и они не помогали, после переустановки DX10 библиотеки подошли :/

Добавлено через 23 минуты
Вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Const
Mail_Loggin='Логин';
Mail_Password='Пароль';
Port=465;
begin
  IdSMTP1.Disconnect;                                          // Отключаем Smtp Для редактирования его свойств
  IdSocksInfo1.Authentication:=saNoAuthentication;             // Выставляем значение - Без аутентификации
  IdSocksInfo1.Port:=Port;                                     // Порт по которому мы будем связываться
  IdSocksInfo1.Version:=svNoSocks;                             // ...
 
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;   // Метод шифрования
  IdMessage1.Clear;                                            // Очищаем письмо
  IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;           // устанавливаем SSL Handler для IdPOP3 SMTP
  IdSMTP1.UseTLS := utUseImplicitTLS;                          // Выставляем значение - использовать неявный TSL
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1; // Метод шифрования
  IdSMTP1.Host := 'smtp.yandex.ru';                            // Хост к которому мы подключимся
  IdSMTP1.Port := Port;                                        // Порт по которому мы будем связываться
  IdSMTP1.AuthType := satDefault;                              // Тип аутентификации: Login/Password
  IdSMTP1.UserName := Mail_Loggin;                             // Логин от нашей почты
  IdSMTP1.Password := Mail_Password;                           // Пароль от нашей почты
  IdMessage1.From.Name :='FastTour';                           // Адресат Имя или подпись
  IdMessage1.From.Address := Mail_Loggin;                      // Адресат Email
  IdMessage1.Body.Text:='TEST';                                // Текст письма
  IdMessage1.Subject:='Тема';                                  // Тема которая будет отображаться сверху письма
  idMessage1.Recipients.EMailAddresses:='FastTour@yandex.ru';  // Адресант Email
 
  IdSMTP1.Connect;                                             // Пытаемся подключиться...
  if IdSMTP1.Connected=True then IdSMTP1.Send(IdMessage1) else ShowMessage('Ахтунг, сообщение не было отправлено!');
  IdSMTP1.Disconnect;                                          // По завершению мы отключаемся
end;



0



droider

Эксперт Pascal/Delphi

4881 / 2754 / 848

Регистрация: 04.10.2012

Сообщений: 10,039

17.09.2016, 12:06

12

Цитата
Сообщение от Sd2030
Посмотреть сообщение

Немного код подправил, 2-3 ошибки вылезали

код править не надо. Он рабочий. Достаточно было указать Ваши учетные данные почтового ящика, заголовок и т.д.

Цитата
Сообщение от Sd2030
Посмотреть сообщение

библиотеки я смотрел которые были предоставлены вами и они не помогали, после переустановки DX10 библиотеки подошли

У меня они работают без проблем. Без переустановок. Проверено на XE3 и Delphi 10 Seattle.

Цитата
Сообщение от Sd2030
Посмотреть сообщение

if IdSMTP1.Connected=True then

уже «плохо». Достаточно

Delphi
1
if IdSMTP1.Connected then...

я не зря описал этот блок как

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
try
   SMTP.Connect;
   SMTP.Send(MailMessage);
   ShowMessage('Письмо отправлено!');
  except on E:Exception do
   begin
    ShowMessage('Статус отправки: ERROR - '+E.Message +#10#9 + 'Письмо не отправлено');
   end;
  end;
 finally
  if SMTP.Connected //если после отправки сообщения подключение активно
  then SMTP.Disconnect; //отсоединяемся
 end;
...

Добавлено через 6 минут
Я говорил Вам делать по аналогии, но вижу очередную самодеятельность. Для меня тема закрыта.
Удачи!



0



0 / 0 / 0

Регистрация: 24.09.2020

Сообщений: 1

29.09.2020, 19:37

13

бесполезная тема это не как не помогло.



0



пофигист широкого профиля

4602 / 3062 / 850

Регистрация: 15.07.2013

Сообщений: 17,660

30.09.2020, 03:32

14

ywjtyjdoj, не огорчайтесь. Не вы первый незнайка, который пытается изучать программирование на всемирной помойке. Такое получается очень редко кому и очень редко когда.



0



Delphi XE7 is using Indy version 10.6.0.5169 and if you want to use SSL components you now need to install OpenSSL. I’m using IdSSLIOHandlerSocketOpenSSL1 component for my FlickrPhotoStats application (you can read more about it here : Delphi REST client to retrieve flickr statistics ) that uses REST technology to retrieve flickr stats using the available API.

My tool used to work under Delphi XE6 without problems and after my upgrade to Delphi XE7 I can see that when it tries to use the IdHTTP component the following exception is thrown: «Cannot load SSL library«. Basically

the error is raised because now you need to install

 (*see comments below) you need to update OpenSSL as Delphi XE7 has a dependency with the latest library. Update it locally in your machine in order to use IndySSL components. At runtime, Indy loads two libraries: libeay32.dll and ssleay32.dll (these libraries are not distributed with Indy due to some restrictions exporting SSL technology). 

The easiest solution to fix this issue, is to download the following library:

  • Win32 OpenSSL v1.0.1i.
  • Win32 OpenSSL v1.0.li light. (Light version).

Updated location -> IndySockets/OpenSSL-Binaries: An archive of OpenSSL binaries that are typically used with Indy (github.com)

This library among others can be found here: Win32OpenSSL.

NOTE: this solution is only applicable on Windows. I have only tested it under Windows 7 64 bits and it works fine.

Once the setup has been launched, select the following option:

After the libraries have been installed, the application will work without problems. DLLs can be found in the OpenSSL-Win32 directory also. With the selected option (Windows system directory) the libraries will be installed at C:windowsSysWOW64 folder.

Update: KM mentioned that it’s better to distribute the libraries with the app instead of installing the libraries under windows directory.

Update: Nicholas Ring has provided a very useful link for OpenDec (Home of OpenSSL DLLs & the Delphi Encryption Compendium), DLLs can be found here also:

  • OpenDec. 

If you are interested in my application, this can be found here:

Source code and binaries can be found here:

  • https://github.com/JordiCorbilla/FlickrPhotoStats (Source code)
  • FlickrPhotoStats(x86) v3.0. (binaries)
  • FlickrPhotoStats(x64) v3.0. (binaries)

Screenshots:

Кто знает как яндекс почту прикрутить к indy с ssl под дектоп работает, под андроид раньше работало сейчас оред что в отладке при коннекте SMTP не загружена библиотека SSL ранше использовал связку tidSMTP+tidMessage+IdSSLIOHandlerSocketOpenSSL c 465 портом

Этото код работает в десктопе на яндексе под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll

Function TFormOFORMLENIE.mail(email:STRING):Boolean;
var email:String;
begin
  try
    Smtp.AuthType:=satDefault;
    SMTP.ReadTimeout:=10000;
    SMTP.Host := ‘smtp.yandex.ru’;
    SMTP.Port := 465;
    SMTP.Username :=login;
    SMTP.Password :=pass;

    SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
    SMTP.UseTLS:= utUseImplicitTLS;

    IdSSLIOHandlerSocketOpenSSL1.Destination := SMTP.Host+’:’+IntToStr(SMTP.Port);
    IdSSLIOHandlerSocketOpenSSL1.Host := SMTP.Host;
    IdSSLIOHandlerSocketOpenSSL1.Port := SMTP.Port;
    IdSSLIOHandlerSocketOpenSSL1.DefaultPort := 0;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
    MailMessage.From.Name := ‘Тест’;
    MailMessage.Subject := ‘Тест: ‘+FormatDateTime(‘dd.mm.yy-hh:nn’,Now) ;

    MailMessage.From.Address :=’bossalex@ya.ru’;
    MailMessage.Recipients.EMailAddresses := email;
    MailMessage.Body.Text := MemoTXT.Text;
  try
      try
        SMTP.Connect;// орет нет библиотеки SSL — под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll только не FMX на VCL к яндексу коннектися и отправляет письма,

// есть еще libgcc_s_dw2-1.dll libwinpthread-1.dll msvcr100.dll правда не помню тоже какието библиотеки забыл для чего, надо в инете поковырять
        sleep(200);
        Application.ProcessMessages;
        SMTP.Send(MailMessage);
        ShowMessage(‘Письмо отправлено!’);
        MailMessage.MessageParts.Clear;
      except
        on e: Exception do
        begin
          sleep(200);
          ShowMessage(‘Письмо не отправлено!’);
        end;
      end;
    finally
      MailMessage.MessageParts.Clear;
      SMTP.Disconnect;
    end;
  except
  end;
end;

Some libraries, like Indy, use openssl to connect to secure servers using TLS. As some components from sgcWebSockets package are based on Indy library, make use of openssl libraries and sometimes you get an error message when you can load a library.

There are several reasons why you can’t load the openssl library.

In the following lines I will try to explain the most common ones.

Library can not be found

Yes, this is the number one reason why library can not be loaded. Usually if openssl libraries are in the same folder that your main application, openssl can be loaded in your app. You can try to update your global path where your openssl libraries are if this is not the same folder than your application.

So, every time you get this error, first check if your openssl libraries exists and are in the correct folder. 

Library is old

OpenSSL libraries are updated quite often and sometimes you don’t have the latest openssl libraries or are not compatible with your application.

Check if you have latest openssl libraries because if some function needed by your app are not included in your openssl library, this can be a reason why can not be loaded. 

VC++ runtime package is not installed 

Yes, another reason, why openssl library can not be loaded, in windows environments, is because vc++ runtime packages are not installed in your machine. If you are not sure if have been installed, first install runtime package and try again. 

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    Соблюдайте общие правила форума

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
    Указывайте точные версии Delphi и используемых сетевых библиотек.

    Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.


    Внимание:
    попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…


    Полезные ссылки:
    user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


    Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

    >
    InDy, работа с протоколом HTTPS
    , Помогите разобраться

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему

      


    Сообщ.
    #1

    ,
    12.12.05, 14:24

      1: Как работать с этим протоколом, к примеру осуществить команду POST или GET через IdHTTP1

      На форме «Button», «Memo» и следующие компоненты inDy:

      IdHTTP1
      IdSSLIOHandlerSocket1
      IdSocksInfo1

      Естественно связаны между собой:

      ExpandedWrap disabled

        IdHTTP1.IOHandler:=IdSSLIOHandlerSocket1;

        IdSSLIOHandlerSocket1.SocksInfo:=IdSocksInfo1;

      Но при попытке

      ExpandedWrap disabled

        s := IdHTTP1.Post(‘{адрес сайта}’,tList);

      происходит ошибка:
      «Connection timed out» или «Could not load SSL library». :wacko:

      Кстати, IdSSLIOHandlerSocket1 много параметров, нужно что-либо вводить в поля: «CertFile», «KeyFile», «RootCertFile», «VerifyDepth» и т.д.? :huh:


      Sec†orX



      Сообщ.
      #2

      ,
      12.12.05, 15:27

        Если в параметрах IdSocksInfo1 ставлю svSocks4 или svSocks5, то ошибка: «Connection timed out», а если svNoSocks, тогда: «Could not load SSL library».


        Sec†orX



        Сообщ.
        #3

        ,
        13.12.05, 11:04

          Немного разобравшись, понял, что ошибка «Could not load SSL library» возникает из-за отсутствия библиотек «ssleay32.dll» и «libeay32.dll». Я нашел несколько версий этих dll но они не подходят, откуда можно скачать эти библиотеки для Delphi 7 и InDy 9. Подскажите плиз. :unsure:

          Добавлено 13.12.05, 11:33
          Скачал DLL, вот их где оказывается можно найти: http://indy.fulgan.com/SSL/
          Но возникла другая проблема, ошибка: «Error connecting whith SSL» Как исправить?


          Sec†orX



          Сообщ.
          #4

          ,
          13.12.05, 12:02

            Поставил в опциях SSL Method:=sslvTLSv1 и заработало!

            Добавлено 13.12.05, 12:44
            Снова проблемка:

            ExpandedWrap disabled

              посылаю s := IdHTTP1.Get(‘https://www.{URL}.jsp?’+tCode[0]);

            в s мне заносится промежутачная страница (с сообщением «подождите, идет загрузка данных…»).
            А как дождаться этой загрузки и в переменную s занести результат по окончанию загрузки?


            Sec†orX



            Сообщ.
            #5

            ,
            13.12.05, 13:17

              И снова отвечаю на свой вопрос.

              Пришлось пропарсить яваскрипт и по его данным делать загрузку из делфи, обходя промежуточную страницу.


              .DeV!L



              Сообщ.
              #6

              ,
              13.12.05, 20:10

                Full Member

                ***

                Рейтинг (т): 11

                З.Ы. плохо что себе плюсик поставить нельзя :D

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • Delphi: Сетевое программирование
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0925 ]   [ 16 queries used ]   [ Generated: 9.02.23, 09:51 GMT ]  

                Topic: Indy > Could not load SSL library  (Read 14542 times)

                Hi.
                On my (manjaro linux) does not work SSL in Indy

                1. var

                2. HTTP: TIdHTTP;

                3. SSL: TIdSSLIOHandlerSocketOpenSSL;

                4. begin

                5. SSL:=TIdSSLIOHandlerSocketOpenSSL.Create();

                6. HTTP:=TIdHTTP.Create();

                7. HTTP.IOHandler:=SSL;

                8. HTTP.Get(URL,IndyTextEncoding_UTF8);

                I get an error:
                Could not load SSL library.

                1. ls l /lib64/libcrypto*

                2. lrwxrwxrwx 1 root root            16 dec  3 01:20 /lib64/libcrypto.so > libcrypto.so.1.1

                3. rxrxrx 1 root root    2850616 dec  9 21:23 /lib64/libcrypto.so.1.0.0

                4. rwxrxrx 1 root root   2594952 dec  3 01:21 /lib64/libcrypto.so.1.1

                Why is this happening?

                PS: Indy version: svn rev.5444 (from OPM)

                « Last Edit: May 05, 2018, 09:08:57 am by RDL »


                Logged

                Sorry for my english, google translation!


                I get an error:
                Could not load SSL library.

                On Windows, that error typically means the correct bitness OpenSSL libraries are not on the path. But on Linux you should already have these installed by default.

                Make sure you also have the libssl .so in addition to the libcrypto .so.

                Look in Indy code for what triggers that exception. You’re probably looking for places where it throws EIdOSSLCouldNotLoadSSLLibrary.

                Also, maybe test with Synapse or with FPC’s HTTP client to help narrow down whether it’s Indy, the SSL libs, or something else.


                Logged


                Also, maybe test with Synapse or with FPC’s HTTP client to help narrow down whether it’s Indy, the SSL libs, or something else.

                checked, in synapse ssl working

                Make sure you also have the libssl .so in addition to the libcrypto .so.

                1. ls l /lib64/libssl*

                2. rwxrxrx 1 root root 385952 mar 10 08:54 /lib64/libssl3.so

                3. lrwxrwxrwx 1 root root     13 dec  3 01:20 /lib64/libssl.so > libssl.so.1.1

                4. rxrxrx 1 root root 498544 dec  9 21:23 /lib64/libssl.so.1.0.0

                5. rwxrxrx 1 root root 434176 mar  3 01:21 /lib64/libssl.so.1.1

                Update:

                Apparently indy does not support libcrypto.so.1.1
                If the symbolic link libcryto.so refers to libcrypto.so.1.1, then the Could not load SSL library error occurs.

                If you edit IdSSLOpenSSLHeaders.pas like this:
                Row: 19483

                1. SSLDLLVers: array [0..8] of string = (», ‘.10’, ‘. 1.0.2’, ‘. 1.0.1’, ‘. 1.0.0’, ‘0.9.9’, ‘. 0.9.8 ‘,‘. 0.9.7 ‘,‘ 0.9.6 ‘);

                Replace with:

                1. SSLDLLVers: array [0..8] of string = (‘.0’, ‘.10’, ‘. 1.0.2’, ‘. 1.0.1’, ‘. 1.0.0’, ‘0.9.9’, ‘.0.9.8’, ‘. 0.9.7’, ‘0.9.6’);

                Loading libcrypto.so.1.0.0 runs currectly and SSL works!

                Update:

                Because of this editing, loading .so will not be possible and problems can arise on other systems.

                « Last Edit: March 31, 2018, 04:56:15 pm by RDL »


                Logged

                Sorry for my english, google translation!


                What is the message returned by function WhichFailedToLoad(IdSSLOpenSSLHeaders.pas)?


                Logged



                Logged

                Sorry for my english, google translation!


                @RDL

                I edited my post above.

                Ok. I’m glad it’s working. @Remy regularly visits this forum, maybe he can incorporate your changes in Indy trunk, then I can update in OPM.


                Logged


                @GetMem
                Let’s wait for a response from @Remy
                Thank.


                Logged

                Sorry for my english, google translation!


                I attach corrected IdSSLOpenSSLHeaders.pas (last svn rev. 5451) which correctly looks for:
                libcrypto.so.1.0.0
                libcrypto.so.1.0.0a
                libcrypto.so.1.0.0b
                libcrypto.so.1.0.0c

                libcrypto.so.1.0.1
                libcrypto.so.1.0.1a
                libcrypto.so.1.0.1b
                libcrypto.so.1.0.1c
                ….
                libcrypto.so.1.0.2
                libcrypto.so.1.0.2a
                libcrypto.so.1.0.2b
                libcrypto.so.1.0.2c
                and so on.

                « Last Edit: April 01, 2018, 05:46:53 am by RDL »


                Logged

                Sorry for my english, google translation!


                Apparently indy does not support libcrypto.so.1.1

                That is because Indy doesn’t support OpenSSL 1.1.0+ yet, only 1.0.2 and earlier.  Because there have been major API changes in 1.1.0 that break backwards compatibility, and Indy hasn’t been updated to handle that yet (see #183: Support OpenSSL 1.1.0 in Indy’s issue tracker).

                If the symbolic link libcryto.so refers to libcrypto.so.1.1, then the Could not load SSL library error occurs.

                Makes sense.  See above.

                If you edit IdSSLOpenSSLHeaders.pas like this:
                Row: 19483

                1. SSLDLLVers: array [0..8] of string = (», ‘.10’, ‘. 1.0.2’, ‘. 1.0.1’, ‘. 1.0.0’, ‘0.9.9’, ‘. 0.9.8 ‘,‘. 0.9.7 ‘,‘ 0.9.6 ‘);

                Replace with:

                1. SSLDLLVers: array [0..8] of string = (‘.0’, ‘.10’, ‘. 1.0.2’, ‘. 1.0.1’, ‘. 1.0.0’, ‘0.9.9’, ‘.0.9.8’, ‘. 0.9.7’, ‘0.9.6’);

                Loading libcrypto.so.1.0.0 runs currectly and SSL works!

                Because of this editing, loading .so will not be possible and problems can arise on other systems.

                By changing the first string from » to ‘.0’, Indy will no longer attempt to load the unversioned libcrypto.so or libssl.so symbolic links at all.  You are making it so it will skip them and find (in your case) libcrypto.so.1.0.0 and libssl.so.1.0.0 instead.  That could hurt other systems, where loading the the symbolic links is preferred.

                I attach corrected IdSSLOpenSSLHeaders.pas (last svn rev. 5451) which correctly looks for:

                I have glanced at the patch and see that I need to make some tweaks to it before I incorporate it.  I will report back when it is checked in to Indy’s SVN.


                Logged


                I have glanced at the patch and see that I need to make some tweaks to it before I incorporate it.  I will report back when it is checked in to Indy’s SVN.

                I have just now checked in the patch.  I tweaked the code to apply the lettering logic to both the KYLIXCOMPAT and BASEUNIX/VCL_POSIX branches, and to add a new IdOpenSSLSetLoadSymLinksFirst() function so users can specify whether Indy should load the symlinks before or after checking for specific versions (the default is before, to preserve existing behavior).

                See Changes for how OpenSSL is loaded on *Nix platforms on Indy’s Changelog blog.

                « Last Edit: May 04, 2018, 09:16:10 pm by Remy Lebeau »


                Logged


                @Remy Lebeau
                Why is this part of the code inactive in Linux?

                Checked on linux manjaro.
                Does not work. Could not load SSL library.

                Update:
                I replaced IdSSLOpenSSLHeaders.pas with my own, it worked.

                Is it an indy error or am I doing something wrong?

                « Last Edit: May 05, 2018, 11:36:08 am by RDL »


                Logged

                Sorry for my english, google translation!


                Why is this part of the code inactive in Linux?

                Looking at my previous checkin, it looks like I made a mistake in a new {$DEFINE} I had added:

                  {$UNDEF USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT}
                  {$IFDEF USE_BASEUNIX_OR_VCL_POSIX}
                    {$UNDEF USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT} // <--
                  {$ENDIF}
                  {$IFDEF KYLIXCOMPAT}
                    {$UNDEF USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT} // <--
                  {$ENDIF}

                Should be this instead:

                  {$UNDEF USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT}
                  {$IFDEF USE_BASEUNIX_OR_VCL_POSIX}
                    {$DEFINE USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT} // <--
                  {$ENDIF}
                  {$IFDEF KYLIXCOMPAT}
                    {$DEFINE USE_BASEUNIX_OR_VCL_POSIX_OR_KYLIXCOMPAT} // <--
                  {$ENDIF}

                I have checked in that fix now (rev 5457).

                « Last Edit: May 07, 2018, 11:13:34 pm by Remy Lebeau »


                Logged


                @Remy Lebeau
                I checked, it works!
                Good job, thank you! :)


                Logged

                Sorry for my english, google translation!


                I know this is a Lazarus thread, but for those viewing it relating to Delphi, or perhaps FPC as well, using the Indy source from March 2019 I had to change

                  {$IFDEF UNIX}
                var
                  GIdLoadSymLinksFirst: Boolean = false;

                in IdSSLOpenSSLHeaders.pas to make it work with OpenSSL 1.0.2k on Centos 7

                This then didn’t require the change to the SSLVers string

                « Last Edit: March 31, 2019, 08:17:02 am by hsvandrew88 »


                Logged


                I know this is a Lazarus thread, but for those viewing it relating to Delphi, or perhaps FPC as well, using the Indy source from March 2019 I had to change

                  {$IFDEF UNIX}
                var
                  GIdLoadSymLinksFirst: Boolean = false;

                in IdSSLOpenSSLHeaders.pas to make it work with OpenSSL 1.0.2k on Centos 7

                If you read my earlier messages in this thread, you will see that GIdLoadSymLinksFirst is set to True by default on purpose for backwards compatible, and that there is a new IdOpenSSLSetLoadSymLinksFirst() function added if you want to change the default at runtime, eg in your app startup code:

                IdOpenSSLSetLoadSymLinksFirst(False);


                Logged


                Понравилась статья? Поделить с друзьями:

                Читайте также:

              • Deep sea electronics ошибки
              • Deep rock galactic сессия закончена ошибка
              • Deep rock galactic ошибка при запуске
              • Deep rock galactic как изменить имя на пиратке
              • Deep rock galactic the error cube

              • 0 0 голоса
                Рейтинг статьи
                Подписаться
                Уведомить о
                guest

                0 комментариев
                Старые
                Новые Популярные
                Межтекстовые Отзывы
                Посмотреть все комментарии