powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SLL Indy 9 vs D7
22 сообщений из 22, страница 1 из 1
SLL Indy 9 vs D7
    #39835812
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 дня мудохался с ошибками Could not load SSL library и Error connecting with ssl

весь интернет перерыл, обновился до 9.0.50, попробовал кучу всяких dll от openssl и собранных только для Indy, оставалось только на 10ку перейти, потом купить типа саму среду и весь тот бред что советуют в тырнетах

Суть проблемы в совместимости библиотек ssleay32.dll и libeay32.dll с Indy 9 в большинстве случаев с IdSSLOpenSSLHeaders.pas (частично наверное и IdSSLOpenSSL), в котором есть кривая функция Load, подгружающая эти библиотеки и проверяющая их "версию" (тестирование указателей на нахождение функций в либах). Поскольку функций там тьма, где в какой версии либ реализовано хрен поймешь, при отсутствии их естественно вываливается 1 ошибка, однако с подсунутыми валится вторая, но заметил особенность случайно - если либ нету на машине после получения первой ошибки подсовываем при запущенном EXE имеющие DLL и видим вдруг не с того не с сего - GET проходит, чудиса!? перезапускаем прогу - хертам, 2ая ошибка

лезем в эту Load и видим вот такую ересь
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  if hIdCrypto = 0 then hIdCrypto := LoadLibrary(SSLCLIB_DLL_name);
  If hIdSSL = 0 Then hIdSSL := LoadLibrary(SSL_DLL_name) else exit;

  @IdSslCtxSetCipherList := LoadFunction(fn_SSL_CTX_set_cipher_list);
  @IdSslCtxNew := LoadFunction(fn_SSL_CTX_new);
  @IdSslCtxFree := LoadFunction(fn_SSL_CTX_free);
и бла бла бла

и в конце
  result :=
    (@IdSslCtxSetCipherList<>nil) and
    (@IdSslCtxNew<>nil) and
и тады


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

вариант использованный мной следующий - поскольку мне не нужен весь функционах из хрен пойми какой либы подо что то собранный, просто напросто после инициализации всех переменных до гетов с постами делаю
Код: pascal
1.
IdSSLOpenSSLHeaders.Load


И ВСЕ!!! никаких версий не ищу, чужие исходники не правлю, если где вывалится дальше ошибка какой то функции нет - отдельно задебажу
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835814
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

SSL конечно же, звиняйте
вопщим так для истории, кому немного допилить надо старые проги без тупых советов по обновлению
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835816
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если что откель брал инди и длл
https://indy.fulgan.com/
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835824
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ну еще указывать надо SSLOptions.Method := sslvSSLv23;
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835827
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мож кому вариант патча пригодится
http://www.cyberforum.ru/post4978037.html

мне не помогло )
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835835
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

там есть такая функция IdSSLOpenSSLHeaders.WhichFailedToLoad
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835838
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747,

есть, но перебирать и дальше дллки искать какую же надо нет никакого желания, в ручную делаете Load погнали дальше до ошибки
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835840
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin до ошибки
которой скорее всего и не будет
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835850
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

проект большой или в начале?
если что (ну тупик то есть), переходите на Synapse :)
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835851
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

проект вообще лохматых годов, надо всего лишь json отправлять на https
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835866
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

подумайте, может переход на Synapse будет и не таким затратным.


На всякий случай прикладываю код из моего проекта, вдруг пригодится

function SendHttpPostRequest
Код: pascal
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
UNIT ...

INTERFACE

USES Classes;


   function SendHttpPostRequest(const AURL, APOSTData: string;
                                const AAnswer: TStream;
                                var AErrMsg: string;
                                const AUserName: string='';
                                const APassword: string=''): Boolean; overload;

   function SendHttpPostRequest(const AURL, APOSTData: string;
                                var AAnswer: string;
                                var AErrMsg: string;
                                const AUserName: string='';
                                const APassword: string=''): Boolean; overload;


IMPLEMENTATION

USES ssl_openssl, httpsend;


//------------------------------------------------------------------------------
//based on Synapse
//For HTTPS-Support:
//  1) USES ssl_openssl;
//  2) copy libeay32.dll
//  3) copy ssleay32.dll

function SendHttpPostRequest(const AURL, APOSTData: string;
                             const AAnswer: TStream;
                             var AErrMsg: string;
                             const AUserName: string;
                             const APassword: string): Boolean;
var
   HTTP: THTTPSend;
begin
   AErrMsg:='';

   HTTP := THTTPSend.Create();
   try
      HTTP.UserName:=AUserName;
      HTTP.Password:=APassword;

      //-- ShowMessage(HTTP.Sock.SSL.LibName);

      WriteStrToStream(HTTP.Document, APOSTData);
      HTTP.MimeType := 'application/x-www-form-urlencoded';
      Result := HTTP.HTTPMethod('POST', AURL);
      if Result then
         AAnswer.CopyFrom(HTTP.Document, 0)
      else
         AErrMsg:=HTTP.Sock.LastErrorDesc;
   finally
      FreeAndNil(HTTP);
   end;
end;
//------------------------------------------------------------------------------
function SendHttpPostRequest(const AURL, APOSTData: string;
                             var AAnswer: string;
                             var AErrMsg: string;
                             const AUserName: string;
                             const APassword: string): Boolean;
var
   Mem   : TMemoryStream;
   iLen  : integer;
begin
   AAnswer:='';
   AErrMsg:='';

   Mem:=TMemoryStream.Create();
   try
      Result:=SendHttpPostRequest(AURL,APOSTData,
                                  Mem,
                                  AErrMsg,
                                  AUserName, APassword);

      if Result then
      begin
         mem.Position:=0;
         iLen:=mem.Size;
         
         SetLength(AAnswer, iLen);
         if iLen>0 then
            mem.ReadBuffer(AAnswer[1],iLen);
      end
   finally
      FreeAndNil(Mem);
   end;
end;

END.


...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835907
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот потому я и не рекомендую никому начинать НОВЫЕ проекты на базе индюков...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835930
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подумайте, может переход на Synapse будет и не таким затратным.

Как-то я пробовал делать обмен через https при помощи Synapse. Не понравилось то, что на этапе инициализации происходит возня с криптографией и прога из-за этого грузится на секунду дольше. В Indy и OverbyteIcs такой возни нет.
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835949
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семёнподумайте, может переход на Synapse будет и не таким затратным.

) спасибо, не было бы привязки к старому локальному виндовому приложению - написал бы это все на java
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39835972
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забей на Инди. Старые серты может не читать.
Там нужно еще заморочиться поискать библиотеку под разные типы сертов.
Держи класс(только лишнее убери), использует com-объект винды для доступа к ссш:
Код: pascal
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
unit HTTPClassUnit;

interface
uses ActiveX, ComObj, Variants, SysUtils;

type
  TSSHCom = class(TObject)
  private
    { Public declarations }
    class function Request(const URI, method, protocol: string; const data: string = ''; const token: string = ''; const location: string = ''): Widestring;
  public
    class function RequestHTTPS(const URI, method: string; const data: string = ''; const token: string = ''): Widestring;
    class function RequestHTTP(const URI, method: string; const data: string = ''; const token: string = ''): Widestring;
  end;

implementation
uses IniClassUnit, LogUnit, uLkJSON;

class function TSSHCom.Request(const URI, method, protocol: string; const data: string = ''; const token: string = ''; const location: string = ''): Widestring;
var
  Request: OleVariant;
  Resp, proxystr: string;
  status: integer;
  js: TlkJSONobject;
begin
  Request := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  proxystr := IniRep.proxystr;
  if trim(proxystr) <> '' then
    Request.SetProxy(2, proxystr);
  LogClass.WriteLog('');
  LogClass.WriteLog('===========================================================');
  LogClass.WriteLog('proxystr=' + proxystr);
  LogClass.WriteLog('data=' + data);
  LogClass.WriteLog('token=' + token);
  LogClass.WriteLog('method=' + method);

  if location = '' then
  begin
    Request.Open(method, protocol + '://' + HostName + '/' + URI, False);
  end
     else
  begin
    Request.Open(method, location, False);
  end;
  Request.SetRequestHeader('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0');
  if trim(token) <> '' then
    Request.SetRequestHeader('Authorization', 'token ' + token);
  Request.SetRequestHeader('cache-control', 'no-cache');
  Request.SetRequestHeader('Accept-Language', 'ru');
  Request.SetRequestHeader('content-type', 'application/json');
  Request.SetRequestHeader('Accept-Charset', 'utf-8');
  Request.Send(data);
  LogClass.WriteLog('response_text=' + Request.ResponseText + ',status='+IntToStr(Request.Status));
  LogClass.WriteLog('===========================================================');
  LogClass.WriteLog('');  
  if Request.Status = 200 then
    result := Request.ResponseText else
  begin
    js := TlkJSON.ParseText(Request.ResponseText) as TlkJSONobject;
    if Request.Status = 301 then
      result := Self.Request(URI, method, protocol, data, token, Request.getResponseHeader('Location'))
    else
      raise Exception.Create(Request.ResponseText);
  end;
end;

class function TSSHCom.RequestHTTPS(const URI, method: string; const data: string = ''; const token: string = ''): Widestring;
begin
  result := TSSHCom.Request(URI, method, 'https', data, token);
end;

class function TSSHCom.RequestHTTP(const URI, method: string; const data: string = ''; const token: string = ''): Widestring;
begin
  result := TSSHCom.Request(URI, method, 'http', data, token);
end;

end.
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836000
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийвот потому я и не рекомендую никому начинать НОВЫЕ проекты на базе индюков...

НОВЫЕ проекты на базе СТАРЫХ Indy.
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836002
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы вот работаем на 10-ке, и прекрасно подходят стандартные сборки от OpenSSL
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836034
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Мы вот работаем на 10-ке, и прекрасно подходят стандартные сборки от OpenSSLАналогично.
Единственное, что в мобильных приложения вместо TidHttp используем TNetHTTPClient, тогда с ssl вообще нет проблем
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836200
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Мы вот работаем на 10-ке, и прекрасно подходят стандартные сборки от OpenSSL+1000.
Мудохался на 9-ке. Поставил 10 и все залетало.
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836280
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.07.2019 15:40, Cobalt747 пишет:
> НОВЫЕ проекты на базе СТАРЫХ Indy.

любые индюки со временем становятся СТАРЫМИ.
а на совместимость эти "творцы" всегда плевали,
исключительно из любви к искусству.

если есть возможность не вляпаться в это Г,
то нужно эту возможность непременно использовать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39836290
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

Случайно не к Рудате соединяешься?
...
Рейтинг: 0 / 0
SLL Indy 9 vs D7
    #39843778
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BСлучайно не к Рудате соединяешься?
нет, к атоловским онлайн-кассам
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SLL Indy 9 vs D7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]