Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как решить проблему запуска `IdTCPServer` с `IdServerIOHandlerSSLOpenSSL` в Linux на Delphi 10.4

Delphi , Программа и Интерфейс , IDE и Компилятор

Как решить проблему запуска IdTCPServer с IdServerIOHandlerSSLOpenSSL в Linux на Delphi 10.4

При работе с компонентами Indy в Delphi 10.4 под Linux может возникнуть проблема с запуском IdTCPServer с использованием IdServerIOHandlerSSLOpenSSL, связанная с некорректной загрузкой библиотеки SSL. В данной статье рассмотрим, как можно решить эту проблему.

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

Разработчики, использующие Delphi 10.4 для запуска IdTCPServer с IdServerIOHandlerSSLOpenSSL под Linux, могут столкнуться с ошибкой EIdOSSLCouldNotLoadSSLLibrary, указывающей на невозможность загрузки библиотеки SSL. В то же время, под Windows все работает корректно. В директории SSL уже присутствуют файлы для обеих платформ: DLL для Windows и .so файлы, скомпилированные из "openssl-1.1.1j". Директория содержит файлы libeay32.dll, ssleay32.dll, libcrypto.so, libssl.so.

Анализ проблемы

Прежде всего, важно понимать, что под Linux невозможно использовать библиотеки DLL, предназначенные для Windows. Вместо этого, TIdSSLIOHandlerSocketOpenSSL будет искать библиотеки libssl.so.x.x.x[l] и libcrypto.so.x.x.x[l], где x.x.x - это версия 1.0.2 или ниже, и [l] - это необязательный символ a..z, или симлинки libssl.so/libcrypto.so, которые указывают на версии этих библиотек.

Кроме того, TIdSSLIOHandlerSocketOpenSSL (и, соответственно, TIdServerIOHandlerSSLOpenSSL) не поддерживает версии OpenSSL 1.1.x, а работает только с OpenSSL 1.0.2 и более ранними версиями.

Решение проблемы

Для использования OpenSSL 1.1.x необходимо применять другой обработчик ввода-вывода. Один из таких обработчиков находится в статусе pull request на ожидании ревью и пока не был включен в основной код Indy, но его можно попробовать в действии. Ссылка на pull request:

#299 Added new OpenSSL IO Handler for OpenSSL 1.1.1

Однако, если вы не хотите экспериментировать с новой версией OpenSSL, рекомендуется установить версию 1.0.2, которая уже проверена и хорошо себя зарекомендовала. Это позволит избежать дополнительных проблем, связанных с интеграцией новой системы.

Пример кода

program ServerSSL;
{$APPTYPE CONSOLE}
uses
  IdGlobal,
  IdTCPServer,
  IdSSLOpenSSL;

var
  Server: TIdTCPServer;
begin
  Server := TIdTCPServer.Create(nil);
  Server.OnExecute := ServerExecute;
  Server.IOHandler := TIdServerIOHandlerSSLOpenSSL.Create(nil);
  Server.DefaultPort := 12345;
  Server.BindToIP := '127.0.0.1';
  Server.Active := True;

  // Ожидание нажатия клавиши для выхода
  Readln;
  Server.Active := False;
  Server.Free;
  TIdSSLIOHandlerSocketOpenSSL.UnLoadSSLLib();
end;

procedure ServerExecute(AContext: TIdContext);
begin
  // Ваш код обработки запроса
end;

Заключение

При работе с IdTCPServer и IdServerIOHandlerSSLOpenSSL в Linux на Delphi 10.4 важно убедиться, что используются корректные библиотеки OpenSSL, соответствующие требованиям компонентов Indy. Установка версии OpenSSL 1.0.2 является проверенным решением для устранения возникшей проблемы.

Следуя этим рекомендациям, вы сможете успешно запустить IdTCPServer с IdServerIOHandlerSSLOpenSSL в среде Linux на Delphi 10.4.

Создано по материалам из источника по ссылке.

Разработчики столкнулись с проблемой запуска `IdTCPServer` с `IdServerIOHandlerSSLOpenSSL` в Linux на Delphi 10.4, связанной с некорректной загрузкой библиотеки SSL, и рассматривают способы её решения, включая использование альтернати


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: IDE и Компилятор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 16:00:26/0.0036821365356445/0