Локальный прокси-сервер HTTP-HTTPS, который может устанавливать HTTPS-соединение через прокси-сервер

Локальный прокси-сервер HTTP-HTTPS, который может устанавливать HTTPS-соединение через прокси-сервер

Вот сделка:

  • Наше клиентское программное обеспечение может подключаться только по протоколу http, оно не может использовать https.
  • Однако требования безопасности диктуют сквозную безопасность, поэтому при обращении к серверу нам необходимо использовать https.
  • Теперь я смог сделать это в тестовой среде, используяошеломитьсо следующей конфигурацией:

Файл stunnel.conf:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
connect = the.real.server:443
  • Учитывая конфигурацию Stunnel, приведенную выше, я могу настроить свой тестовый клиент на использование адреса конечной точки, http://localhost:3000/endpoint/url/и все будет работать отлично.
  • Но в производственной среде клиентская сторона не имеет прямого сетевого доступа к реальному серверу. Трафик HTTP/S со стороны клиента должен проходить через прокси-сервер.
  • Мои вопросы:
    • Можно ли настроить Stunnel для подключения через прокси-сервер?
    • Если невозможно использовать Stunnel, есть ли другой способ сделать это?

решение1

Кажется, что это поддерживается, ностраница руководства, но язык написан так, что для его понимания вам в той или иной степени придется знать протоколы:

ПодПротоколмы можем увидеть следующее:

connect На основе RFC 2817 — Обновление до TLS в HTTP/1.1, раздел 5.2 — Запрос туннеля с помощью CONNECT. Этот протокол поддерживается только в режиме клиента.

Далее мы находим следующее:

protocolHost = ADDRESS адрес хоста для согласования протокола Для согласования протокола 'connect' protocolHost указывает HOST:PORT конечного сервера TLS, к которому должен подключиться прокси. Прокси-сервер, напрямую подключенный stunnel, должен быть указан с опцией connect.

Итак, мы можем собрать это воедино:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
protocol = connect
connect = proxy.example.org:3128
protocolHost = the.real.server:443

Я не проверял, но, судя по формулировке в документации, это должно работать так, как и задумано.

решение2

Вы можете сделать это с помощью:

[SSL Proxy]
accept = 8443
connect = 8084
cert = certificate.pem
key = private_key.pem

Для разрешения клиентских подключений по протоколу https вам понадобится сертификат от центра сертификации.

Связанный контент