Сервер Delphi (Rio) DataSnap на контейнере Linux, какие библиотеки OpenSSL нужны? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть сервер DataSnap, работающий в контейнере Docker (ubuntu 18.04), и при попытке подключиться к нему он возвращает «Соединение закрыто изящно». Фильтры шифрования включены, и я знаю, что это сообщение обычно означает, что я забыл включить библиотеки OpenSSL, где приложение может их найти. Я вполне уверен, что проблема в отсутствующих библиотеках OpenSSL, потому что я скомпилировал сервер DataSnap без фильтров шифрования и соединение установилось.

Это не наше первое приложение сервера DataSnap, а первый запуск приложения в среде Linux. ,Мы привыкли включать libeay32.dll и ssleay32.dll в ту же папку, что и наши приложения Windows, но мои попытки предоставить аналогичные библиотечные файлы в этой среде Linux / ubuntu не сработали.

Глядя на этот пост (http://docwiki.embarcadero.com/RADStudio/Rio/en/OpenSSL) и просматривая исходный код Indy10 (IdSSLOpenSSLHeaders.pas), кажется, что необходимыми библиотечными файлами являются libssl.so и libcrypto.so. Существует также константа SSLDLLVers. массив строк, который используется для попытки загрузки различных версий файлов библиотеки.

Я думаю, что OpenSSL уже есть в Ubuntu 18.04, но я также выполнил команду "apt-get -y install openssl", чтобы сделатьконечно. Я скопировал полученные файлы (libcrypto.so.1.1 и libssl.so.1.1) из папки / usr / lib / x86_64-linux-gnu в ту же папку, что и сервер DataSnap, и в папку / usr / libВ каждом случае я переименовывал файл только с расширением .so. Я проверял, что копия действительно сработала, но не повезло.

Такое чувство, что есть два возможных препятствия - либо файлы библиотеки не являютсяв нужном месте и не загружаются, или существует проблема с версией библиотеки. Исходный код Indy10 ищет расширения версии до .1.0.2, а это .1.1. IЯ немного изменяю, удаляя это полное расширение, когда копирую файл в папку приложения, и просто оставляю расширение .so, но у нас не было проблем с нашими серверами Windows DataSnap, на которых установлены новейшие библиотеки OpenSSL, поэтому я надеюсь, что это не так. проблема совместимости версий.

Буду признателен за любую помощь или предложения. Если это получит личный ответ от Реми Лебо, это будет подарок к празднику!

1 Ответ

1 голос
/ 03 ноября 2019

Я думаю, что проблема пыталась использовать Ubuntu 18.04. У меня также были проблемы с загрузкой драйверов MS-SQL в 18.04, поэтому я вместо этого использовал образ 16.04. Это исправило проблему с драйвером OpenSSL, поскольку последние библиотеки для этого образа - 1.0.2, и драйверы MS-SQL тоже работают тогда.

...