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

Настройка REST Datasnap сервера Delphi для работы с ECDH и TLS1.3

Delphi , Интернет и Сети , Интернет

 

В данной статье мы рассмотрим проблему настройки REST Datasnap сервера на Delphi для поддержки ECDH (Elliptic Curve Diffie-Hellman) шифров и протокола TLS 1.3, а также альтернативные решения для работы с современными TLS версиями. Основываясь на обсуждении на форуме MikeMon, мы проанализируем возможные причины проблем и предложим пути их решения.

Проблема:

Пользователь MikeMon столкнулся с проблемой при попытке настроить Datasnap REST сервер на Delphi 12.2 Patch 2 для поддержки ECDH шифров вместо RSA. Несмотря на использование ECDH сертификата и обновление Indy до последней версии, сервер не работал корректно, выдавая ошибку SSLV3_ALERT_HANDSHAKE_FAILURE. Также возник вопрос об альтернативах Indy, поддерживающих TLS 1.3.

Анализ ситуации и возможные причины:

Обсуждение на форуме выявило несколько потенциальных проблем:

  • Версия OpenSSL: Indy поставляется с OpenSSL 1.0.2u, который не поддерживает ECDH и TLS 1.3 "из коробки". Сообщение об ошибке BoringSSL указывает на возможное использование Google-ской реализации OpenSSL, которая может быть установлена на некоторых платформах, например, Android 6+.
  • Версия TLS: Несмотря на указание использования sslvTLSv1_2, сервер мог все же пытаться использовать SSLv3, что является устаревшим и небезопасным протоколом.
  • CipherList: Неправильная конфигурация CipherList в TIdSSLOpenIOHandlerServer.Options может приводить к проблемам с согласованием шифров.
  • Несовместимость Indy и OpenSSL: Обновление Indy до последней версии может привести к несовместимости с установленной версией OpenSSL, что может вызвать сбои в работе Datasnap сервера.

Решение, предложенное в обсуждении:

DelphiUdIT предложил настроить CipherList в TIdSSLOpenIOHandlerServer.Options для включения ECDH шифров. Пример:

CipherList := '!EXPORT:!LOW:!aNULL:!eNULL:!RC4:!ADK:!3DES:!DES:!MD5:!PSK:!SRP:!CAMELLIA'+
                      ':ECDHE-RSA-AES128-GCM-SHA256'+
                      ':ECDHE-RSA-AES256-GCM-SHA384'+
                      ':ECDHE-RSA-CHACHA20-POLY1305'+
                      ':ECDHE-ARIA256-GCM-SHA384'+
                      ':ECDHE-ARIA128-GCM-SHA256'+
                      ':ECDHE-RSA-AES256-SHA384';

Также, важно убедиться, что SSLVersion установлено в sslvTLSv1_2.

Альтернативное решение: sgcWebSockets Library

Sergio (esegece) предложил использовать библиотеку sgcWebSockets, которая заменяет стандартный Datasnap сервер и поддерживает современные протоколы, включая WebSocket и TLS 1.3. Эта библиотека предоставляет компонент TsgcWSHTTPWebBrokerBridgeServer, который заменяет стандартный Datasnap сервер, сохраняя при этом совместимость с существующим кодом.

Преимущества sgcWebSockets:

  • Поддержка TLS 1.3: Обеспечивает использование самого современного и безопасного протокола TLS.
  • Поддержка WebSocket: Позволяет использовать WebSocket для двунаправленной связи в реальном времени.
  • Совместимость: Сохраняет совместимость с существующим кодом Datasnap сервера.
  • Простота использования: Замена стандартного сервера компонентом TsgcWSHTTPWebBrokerBridgeServer позволяет легко интегрировать новые возможности.

Недостатки sgcWebSockets:

  • Зависимость от сторонней библиотеки: Требуется установка и настройка сторонней библиотеки.
  • Потенциальные изменения в коде: Хотя библиотека стремится к совместимости, могут потребоваться незначительные изменения в коде.

Альтернативные решения для поддержки TLS 1.3:

Remy Lebeau упомянул о сторонних GitHub репозиториях, добавляющих поддержку OpenSSL 3.x/TLS 1.3 в Indy. Некоторые из них:

Рекомендации:

  1. Проверьте версию OpenSSL: Убедитесь, что используете OpenSSL 1.0.2u или более новую версию, поддерживающую ECDH. Если используете Android, проверьте наличие BoringSSL и его совместимость с Indy.
  2. Настройте CipherList: Включите ECDH шифры в CipherList в TIdSSLOpenIOHandlerServer.Options.
  3. Установите SSLVersion: Убедитесь, что SSLVersion установлено в sslvTLSv1_2.
  4. Рассмотрите sgcWebSockets: Если требуется поддержка TLS 1.3 и WebSocket, библиотека sgcWebSockets является отличным решением.
  5. Изучите сторонние репозитории: Если хотите использовать Indy с OpenSSL 3.x/TLS 1.3, изучите доступные GitHub репозитории.

Заключение:

Настройка Datasnap сервера для работы с ECDH и TLS 1.3 может быть сложной задачей, особенно при использовании стандартных компонентов Delphi. Предложенные решения, включая использование библиотеки sgcWebSockets и сторонних репозиториев, позволяют решить эту проблему и обеспечить безопасное и современное взаимодействие с вашим Datasnap сервером. Важно тщательно проверить версию OpenSSL и правильно настроить CipherList, чтобы избежать ошибок и обеспечить совместимость с клиентами.

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

В статье рассматривается проблема настройки REST Datasnap сервера на Delphi для поддержки ECDH шифров и протокола TLS 1.3, предлагаются пути решения, включая использование альтернативной библиотеки sgcWebSockets и сторонних GitHub репозиториев для обновл


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

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




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


:: Главная :: Интернет ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 23:56:55/0.0037980079650879/0