Proszę spojrzeć na poniższy schemat.
Jak to powinno działać?
Gdy zdalne żądanie http: // myhost.com:8080/*, żądanie powinno zostać przesłane do serwera http, który nasłuchuje na porcie 8008 interfejsu pętli zwrotnej. To jest łatwa część.
Gdy zdalny użytkownik zażąda http: // myhost.com:8080/specialurl ...
Program działający jako brama na poziomie aplikacji powinna mieć możliwość uaktualnienia połączenia do zaszyfrowanej sesji ( bez zmiany portów )
Po ustanowieniu zaszyfrowanej sesji za pomocą zdalnej przeglądarki powinien przesłać żądanie do programu C, który nasłuchuje na porcie 8000 interfejsu sprzężenia zwrotnego
Moje pytania to :
- Czy kiedykolwiek wdrażałeś takie rozwiązanie w środowisku produkcyjnym? Jeśli masz...
- Jakiego produktu użyłeś, aby działać jako brama aplikacji?
- Czy możesz podać przykład konfiguracji?
Ostre ograniczenia :
- Nie mam kontroli nad zaporą , a jedynym portem, przez który mogę przenosić ruch zewnętrzny do serwera wewnętrznego, jest 8080. Numer portu jest nieistotny, chodzi o to, że na poziomie zapory jest tylko jeden port, który przekazuje przychodzące wiadomości ruch do wewnętrznego serwera.
- Serwer wewnętrzny musi działać pod Linuksem (obecnie działa Debian Lenny)
- Zdalni użytkownicy nie potrzebują niczego więcej niż bieżącej przeglądarki internetowej i połączenia internetowego, aby uzyskać dostęp do tego serwera. Oznacza to, że zwrotne przekierowanie portów przez SSH nie jest tutaj opcją.
- Potrzebuję produktu, który został przetestowany w produkcji i można go łatwo wdrożyć. Nie zamierzam tworzyć własnej bramy aplikacji (gdyby tak było, myślę, że zadałbym to pytanie w przypadku przepełnienia stosu zamiast zadawać je w przypadku błędu serwera).
Miękkie ograniczenia :
- Chciałbym uniknąć umieszczania Apache jako bramy aplikacji (chociaż jestem gotów to zrobić, jeśli jest to jedyny możliwy wybór)
- Jeśli to możliwe, brama aplikacji powinna być dojrzałym oprogramowaniem typu open source.
Produkty wypróbowane do tej pory jako bramy aplikacji (bez powodzenia)
- nginx
- lighttpd
- funt
Odpowiednie RFC
- RFC2817 (... wyjaśnia, jak użyć mechanizmu aktualizacji w HTTP / 1.1 do zainicjowania Transport Layer Security (TLS) przez istniejące połączenie TCP. Pozwala to niezabezpieczonemu i zabezpieczonemu ruchowi HTTP współdzielić ten sam dobrze znany port ...)
- RFC2818 (... opisuje, jak używać TLS do zabezpieczania połączeń HTTP przez Internet. Obecna praktyka polega na warstwowaniu HTTP przez SSL (poprzednik TLS), odróżniając zabezpieczony ruch od niezabezpieczonego ruchu przy użyciu innego portu serwera ... )
Odpowiedzi:
Jeden port do rządzenia nimi wszystkimi, pokazuje , że ktoś przynajmniej zaimplementował go w świecie Java.
Nie mam - i nigdy nie zaleciłbym, aby to zrobić. Jako konsultant staram się zachęcić moich klientów do korzystania ze standardowych i sprawdzonych technologii. Żaden system nie wydaje się poprawnie implementować tych RFC, z wyjątkiem przypadków skrajnych - i nie byłoby to coś, co chciałbym zasugerować lub wesprzeć.
źródło
Apache ci tu nie pomoże. Może nasłuchiwać tylko połączeń HTTP lub HTTPS (nie obu) na danym porcie.
O ile mi wiadomo, nie ma „dojrzałego produktu”, który implementuje tę funkcjonalność. Poproś administratora sieci o wybicie kolejnej dziury w zaporze ogniowej lub skonfiguruj tunel VPN lub SSH do zewnętrznego punktu końcowego, w którym możesz skonfigurować wiele portów nasłuchujących.
źródło