Jak udělat aby server na portu 80 běžel v netu na SSL 443?

Sheldonizátor

Neví někdo, jestli je možnjé udělat, aby k aplikaci běžící na portu 80 někde v interní firemní síti bylo možno přistupovat i z netu, ale aby to jelo na portu 443, tedy SSL?

Dejme tomu, že aplikace je implementovaná jako normální HTTP a je to ručně zbastlený server poslouchající na portu 80 a aplikace je grafická, zkuchtěná v Delphi, a běží permanentně na windowsáckém serveru. Je možné nějak přesměrovat síť aby se udělal nějaký tunel že někdo z internetu by se připojoval přes port 443 na server kterej by to přeposílal do firemní sítě a zpátky kde by to už šlo nešifrovaně přes port 80?

Jde o to aby data po netu šla šifrovaná a aby se ale HTTPS nemuselo implementit přímo do aplikace.


Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #1 kdy: 06. 10. 2015, 21:49:23 »
Na tohle je přímo jako stvořený web server Nginx, který umí krásně fungovat jako reverzní proxy. V konfiguraci se mu zadá, kde má poslouchat, jaký certifikát a privátní klíč má používat a na který backend má dotazy předávat. Na vnější rozhraní tedy dáte Nginx na 80 a 443 a někde uvnitř sítě bude jen na 80 poslouchat váš server s daty.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #2 kdy: 06. 10. 2015, 21:51:58 »
Jaj no to je ale prasárna toto... není jednodušší to zpřístupnit normálně na portu 80 pouze přes VPN, nebo potřebuješ, aby na to přistupovali i normální lidi (nezaměstnanci)?
jinak mrkni sem https://www.stunnel.org/index.html

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #3 kdy: 06. 10. 2015, 22:21:46 »
pripadne pokud by jiz bezel nekde v siti apache tak ten taky ma mod_proxy (jakkoliv nerikam, ze je to nejlepsi reseni tak muze byt nejvyhodnejsi)
Děkuji za možnost editace příspěvku.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #4 kdy: 06. 10. 2015, 22:26:11 »
Ten stunnel poběží klidně i na těch windowsech, nicméně si myslím, že jsou všechny řešení špatně. Evidentně je to nějaká neudržovaná kdovínaco aplikačka a to, že pojede přes ssl rozhodně neznamená, že bude nějak extra bezpečná. Záleží samozřejmě na tom, jak to má ošetřený přístupy, kdo na to poleze atd, ale možná bych se nad tím ještě 2x zamyslel, jestli není lepší to (nechat) přepsat nějak rozumněji.


Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #5 kdy: 07. 10. 2015, 10:49:12 »
Na tohle je přímo jako stvořený web server Nginx, který umí krásně fungovat jako reverzní proxy. V konfiguraci se mu zadá, kde má poslouchat, jaký certifikát a privátní klíč má používat a na který backend má dotazy předávat. Na vnější rozhraní tedy dáte Nginx na 80 a 443 a někde uvnitř sítě bude jen na 80 poslouchat váš server s daty.

Pokud dá na vnější rozhraní 443 i 80, tak se mu po prvním kliknutí na odkaz v tom webu https změní na http (pokud tedy nebudou relativní). Pokud to tazatel chce mít šifrované, tak proxy na vnějším rozhraní musí mít jen 443.

Ani takhle jednoduché to není, ta proxy by musela změnit všechny interní odkazy na https. Bohužel, i zavedené redakční systémy dělají interní odkazy jako absolutní, nikoliv relativní (u relativních by to fungovat mohlo, tam se o to postará prohlížeč). Nehledě na to, že některé RS zmate, když je jejich spojení na jednom schematu a klientu jde schema jiné.

Jednoduché řešení neexistuje, nejlepší bude (krom aktualizace daného webu a jeho zprovoznění na https), nějaký šifrovaný tunel.

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #6 kdy: 07. 10. 2015, 11:11:14 »
možná bych se nad tím ještě 2x zamyslel, jestli není lepší to (nechat) přepsat nějak rozumněji.
heh. ses student nebo jen nejaky zamestnanec neziskovky/uradu?
Děkuji za možnost editace příspěvku.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #7 kdy: 07. 10. 2015, 11:57:26 »
možná bych se nad tím ještě 2x zamyslel, jestli není lepší to (nechat) přepsat nějak rozumněji.
heh. ses student nebo jen nejaky zamestnanec neziskovky/uradu?
Ani jedno, ani druhý. Nevím o té appce nic, jenom říkám, že je to na zvážení. Jestli je to 10 let nabalovanej bastl, kterej už nikdo 5 let neudržuje a nikdo vlastně ani neví, co a jak to dělá, tak je to samozřejmě problém, nicméně stejně bude dřív nebo později to něčím nahradit. Jestli je to něco malýho a jasně definovanýho, určitě se vyplatí to nechat za flašku rumu a pětikilo předělat nějakýho studenta.
Prostě jenom tvrdím, že to stojí za zvážení.

fedorac

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #8 kdy: 07. 10. 2015, 12:00:50 »
urcite bych zkusil NginX nebo mozna co https://mitmproxy.org/ ?

Rhinox

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #9 kdy: 07. 10. 2015, 12:39:14 »

Jenda


Mirek

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #11 kdy: 07. 10. 2015, 14:29:52 »
Proč se to tady vždycky zvrhne k tomu, že místo aby se řešil dotaz na naprosto konkrétní dobře ohraničenou záležitost - v tomhle případě dokonce naprosto jasný a dobře položený, tak se objeví rady jak to je určitě celé špatně a musí se to úplně zgruntu předělat.

Doporučení Nginx jde rozhodně dobrým směrem, toho bych se držel. Určitě na dané adrese zvenku povolit jen 443 a ne 80.

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #12 kdy: 07. 10. 2015, 22:36:50 »
Zdar, ja mam to same udelano na Apache pres mod_proxy:

LoadModule proxy_module modules/mod_proxy.so

<VirtualHost *:443>
  SslEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  SSLCertificateFile      /etc/SSLCerts/webSrv.cert.pem
  SSLCertificateKeyFile  /etc/SSLCerts/webSrv.key.pem

  ServerName apache.local
  ServerAlias *.apache.local
  ProxyRequests off
  ProxyPreserveHost on
  ProxyPass / http://server.local:80/
  ProxyPassReverse / http://server.local:80/
  ErrorLog logs/apache.local-error_log
  CustomLog logs/apache.local-access_log common
</VirtualHost>


Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #13 kdy: 07. 10. 2015, 22:59:29 »
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

Tohle tam máte schválně pro nějakého 20 let starého webového klienta? Uniká mi smysl s touto sadou šifer vůbec https zavádět.

Re:Jak udělat aby server na portu 80 běžel v netu na SSL 443?
« Odpověď #14 kdy: 07. 10. 2015, 23:20:06 »
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

Tohle tam máte schválně pro nějakého 20 let starého webového klienta? Uniká mi smysl s touto sadou šifer vůbec https zavádět.

Nastavoval jsem to podle http://httpd.apache.org/docs/2.2/ssl/ssl_howto.html Potom zalezi na klientovi jake pouzije sifrovani. Server jich muze podporovat vice. V zasade v tom nevidim nic spatneho ze server podporuje i starsi klienty, z principu v mem pripade by mel klient vyzadovat co nejsilnejsi sifrovani.