Создайте терминатор сокета SSL-сервера

Мне нужно преобразовать EPP (протокол на основе сеанса - https://tools.ietf.org/html/rfc5734) в протокол на основе HTTP-запросов / ответов (JSON). Часть JSON уже написана и работает с несколькими клиентами.

Я смотрел на nginx с использованием веб-сокетов, но веб-сокеты кажутся слишком высокими для необработанного протокола EPP.

Мне нужно решить следующий процесс:

  1. nginx для завершения соединения SSL TCP
  2. считывать запрос EPP (XML) - желательно на PHP
  3. конвертировать в JSON и отправлять на HTTP-сервер
  4. прочитать результат
  5. преобразовать в XML и отправить обратно в соединение EPP

Есть ли какие-либо рекомендуемые технологии в nginx для достижения этой цели? Я могу запрограммировать сервер сокетов PHP без особых хлопот.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, вы строите сервер EPP? Добро пожаловать в мир EPP, от кого-то, кто был в нем с момента его рождения или даже раньше :-)

EPP - это «простой» протокол, использующий XML поверх TLS (обычно есть несколько экземпляров по HTTPS, а в период разработки это были другие предложения, такие как SMTP или BXXP).

Итак, как серверу вам нужно что-то, способное обрабатывать завершение TLS и читать XML. Это возможно на любом языке, и это не ракетостроение. Конечно, дьявол кроется в деталях. И вы не предоставляете достаточно деталей / контекста, чтобы точно увидеть, какие ограничения у вас могут быть или конкретная проблема. Так что вы можете быть здесь немного не по теме, потому что написание простого сервера, обрабатывающего TLS, и чтение XML должно быть показано здесь в виде кода, если вы хотите, чтобы люди вам помогали.

Обязательно прочтите RFC 5734 несколько раз о конкретных аспектах транспорта. Вы, конечно, должны помнить, что это протокол с отслеживанием состояния, поэтому, если вы «пересылаете» запросы внутренне по протоколу без сохранения состояния, вам потребуется выполнить какую-то аутентификацию.

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

Взгляните также на HAProxy, это популярный обработчик подобных вещей.

Но опять же, исходя из ваших конкретных (неизвестных) ограничений (особенно количества клиентов, объема запросов, необходимых соглашений об уровне обслуживания и т. д.), Может быть достаточно чего-то столь же простого, как stunnel.

Обратите внимание, что у вас есть mod_epp для Apache. Может быть, уже не очень живой, но может подсказать. Это позволяет использовать любую программу CGI под Apache, когда сервер получает фактически фреймы EPP, а не HTTP.

В качестве побочного примечания, помимо безопасности (но это должно быть охвачено RFC5734), я бы рекомендовал вам быть осторожным с кодировками, пространствами имен XML и избегать использования нескольких механизмов сериализации в одном потоке (JSON внутри XML - плохая идея, как и XML внутри JSON, но я точно не знаю, как работает ваша "конвертируемая" часть).

Я нашел модуль mod_epp для Apache, который, похоже, решит мои проблемы. Мне нужно было соответствовать существующей архитектуре. Спасибо, Патрик!

McAnix 16.03.2018 13:52

Другие вопросы по теме