Provoz po HTTPS v produkci

hknmtt

Provoz po HTTPS v produkci
« kdy: 14. 12. 2022, 11:01:25 »
Co je dnes "mainstream" sposob nasadenia https na webove aplikacie?

Problem dnes je rozsirenost Let's Encrypt a jeho certifikatov s kratkou zivotnostou, kedy nestaci raz za rok, dva.. manualne nahodit novy certifikat co je 5 minutova robota. Nie, dnes sa musi investovat cas a peniaze do vyvoja automatizovaneho riesenia ktore musi riesit challenge, uschovu, reload certifikatov a v spranvom case cely proces opakovat.

Ak si vezmem ze 99% pripadov je http challenge, tak nie je mozne vypnut port 80, cize aplikacia musi bezat na dvoch portoch a odlisit ci ide o LE na http a podla toho presmerovat na https verziu alebo spracovat LE challenge.

Dalsie riesenie je skryt aplikaciu za vlastnu lokalnu proxinu(traefik, nginx, haproxy..), takze aplikacia sa odbremeni od https a dvoch spojeni, co je super, lenze zase ta proxy treaz musi routovat 99.99999% dat na prazdno, a zrat hw, len kvoli LE ktore pride raz tri mesiace. Ale zase to riesi sama uz, takze aplikacia samotna sa o nic starat nemusi. Ale zase na produkcii to prinasa dalsiu starost - namiesto jednej binarky a jej konfiguracie je vyzadovana dalsia binarka pre tuto proxinu a konfiguracia pre nu a dodatocne znalosti pre spavnu konfiguraciu a prevadzku.

Tretia moznost je pouzit externu proxinu typu CloudFlare ktora kompletne odbremeni od riesenia HTTPS za cenu ze prevadzka zo serveru na cloudflare je nesifrovana(prakticky mitm) a teda cloudflare ma plny pristup k datam uzivatelov a taktiez pod kontrolou komplet cele DNS. A ked sa rozhodne ze sa im nepacite, tak vas vypnu a mate mozno aj niekolko-hodinovy vypadok. Takze taktiez nie idealna situacia.

Preto ma zaujima co dnes fici ako najpouzivanejsi postup?
« Poslední změna: 14. 12. 2022, 11:29:04 od Petr Krčmář »


Re:HTTPS v produkcii
« Odpověď #1 kdy: 14. 12. 2022, 11:32:56 »
Reverzní proxy řeší nejen HTTPS, ale i věci jako Slow lorris.

Re:Provoz po HTTPS v produkci
« Odpověď #2 kdy: 14. 12. 2022, 11:33:35 »
Manuální obnovování certifikátů je peklo, kvůli kterému jsem v dobách před Let's Encrypt vůbec HTTPS nenasazoval. Vede to k chybám a pokud máte stovky webů, tak se z toho zblázníte. Automatizace je cesta, která to celé řeší stylem „nasaď a zapomeň“. Není potřeba nic vyvíjet, všechno je hotové, připravené k nasazení. Já na produkci používám ACME.sh, nasazení je jednoduché, dá se krásně automatizovat.

Na portu 80 mi webové servery samozřejmě taky poslouchají, ale je tam triviální konfigurace, která jen přesměruje příchozího na 443. Tam se pak odehrává všechno ostatní, nic složitého na tom není.

Pochopitelně je nutné to celé monitorovat, protože se může stát, že něco selže a třeba se kvůli vypadlé subdoméně přestanou obnovovat certifikáty. ACME.sh obnovuje ve výchozím stavu ve chvíli, kdy je platnost certifikátu kratší než 30 dnů, monitoring mi začne křičet, pokud platnost klesne pod 14. Je tam tedy dost času na řešení. V průběhu let se problém stal asi jen dvakrát a byla to drobnost, která byla okamžitě vyřešená. Jinak s tím není vůbec žádný problém.

Re:Provoz po HTTPS v produkci
« Odpověď #3 kdy: 14. 12. 2022, 11:55:33 »
nepočítám, když si platíš hosting a řeší to za tebe. Kolem mě a na mých projektech je standard terminovat https na bráně (nginx, haproxy, f5 či cokoliv), vydávat certifikáty přes DNS challenge (s třeba delegovanými TXT záznamy na tvoji infra), nasazovat automaticky a kontrolovat, že je nasazený. Pro interní komunikaci (aplikace <> brána) používat interní CA a interní ceritifikáty.

Reverzní servery jako třeba Caddy umí dokonce si sami certifikát vystavit, takže ani v malém nasazení to není nikterak komplikované.

Re:Provoz po HTTPS v produkci
« Odpověď #4 kdy: 14. 12. 2022, 12:06:37 »
Není žádný jeden způsob, který by se používal řádově víc, než jiné. Vychází se z toho, zda už něco máte, nebo to stavíte od nuly. Třeba když už máte rozchozený nginx a nechcete řešit nic jiného, zprovozníte automatizaci vydávání certifikátů pro nginx. Když se vám to hodí, můžete předřadit službu jako Cloudflare a s tím získáte i HTTPS. Když ještě server nemáte nebo chcete webový stack aktualizovat, použijete třeba Caddy server, který už má správu certifikátu zabudovanou v sobě.

Řešit výměnu certifikátů ručně dnes nedává smysl. HTTP nemusíte řešit jenom kvůli vydávání certifikátů – prohlížeče pořád  adresu bez protokolu doplňují (nepochopitelně) protokolem HTTP, takže pořád potřebujete mít přesměrování z HTTP na HTTPS. A vydávání certifikátů nemusíte nijak zvlášť ošetřovat, LE si s přesměrováním poradí (pokud je udělané správně a přesměrováváte plnou adresu ne stejnou adresu s HTTPS).


vpn22

Re:Provoz po HTTPS v produkci
« Odpověď #5 kdy: 14. 12. 2022, 12:11:06 »
Jak řešit certifikáty pro HTTPS na zařízeních, na kterých nemůže běžet ACME klient (tiskárny, routery...)? Vlastní CA mít nechci.

Je správná cesta generování certifikátů a DNS-challenge na Raspberry Pi a distribuce certifikátů na koncové za´rizení pomocí jejich API (pokud mají)?

hknmtt

Re:Provoz po HTTPS v produkci
« Odpověď #6 kdy: 14. 12. 2022, 12:19:22 »
Jak řešit certifikáty pro HTTPS na zařízeních, na kterých nemůže běžet ACME klient (tiskárny, routery...)? Vlastní CA mít nechci.

Je správná cesta generování certifikátů a DNS-challenge na Raspberry Pi a distribuce certifikátů na koncové za´rizení pomocí jejich API (pokud mají)?

Priama implementacia v aplikacii. Nie je to moc zlozite. Ak sa bavime o LE. Aj ked neviem co s tymto maju tlaciarne&spol.

Re:Provoz po HTTPS v produkci
« Odpověď #7 kdy: 14. 12. 2022, 12:30:16 »
Jak řešit certifikáty pro HTTPS na zařízeních, na kterých nemůže běžet ACME klient (tiskárny, routery...)? Vlastní CA mít nechci.

Je správná cesta generování certifikátů a DNS-challenge na Raspberry Pi a distribuce certifikátů na koncové za´rizení pomocí jejich API (pokud mají)?
To je jedna možnost. Druhá možnost je před ta zařízení dát reverzní proxy, která vyřeší certifikáty, a se zařízením bude komunikovat buď přes HTTP, nebo přes HTTPS se selfsigned certifikátem s dlouhou platností.

Re:Provoz po HTTPS v produkci
« Odpověď #8 kdy: 14. 12. 2022, 12:37:20 »
Manuální obnovování certifikátů je peklo, kvůli kterému jsem v dobách před Let's Encrypt vůbec HTTPS nenasazoval. Vede to k chybám a pokud máte stovky webů, tak se z toho zblázníte. Automatizace je cesta, která to celé řeší stylem „nasaď a zapomeň“. Není potřeba nic vyvíjet, všechno je hotové, připravené k nasazení. Já na produkci používám ACME.sh, nasazení je jednoduché, dá se krásně automatizovat.

To vse je hotove a da se krasne automatizovat funguje tak maximalne, pokud mate dany certifikat na jednom serveru/sluzbe. Co v pripade, kdy certifikat je na X serverech? To uz to nasazeni neni tak jednoduche, ze?

Re:Provoz po HTTPS v produkci
« Odpověď #9 kdy: 14. 12. 2022, 12:43:14 »
Pro interní komunikaci (aplikace <> brána) používat interní CA a interní ceritifikáty.

A co v pripade, ze se vola aplikacni server mimo cestu skrz branu? To se vypina validace certifikatu?
Priklad:
 1] haproxy (example.com certifikat)
 2] 3x web server (interni certifikat)
 3] zaslani requestu primo na web serveru pro domenu example.com (napr. curl s parameterem --resolve)

vpn22

Re:Provoz po HTTPS v produkci
« Odpověď #10 kdy: 14. 12. 2022, 13:26:07 »
Aj ked neviem co s tymto maju tlaciarne&spol.

Ještě jsem nepotkal tiskárnu, do které by šel doinstalovat (bez hackování) ACME klient. Vy nějakou takovou znáte? U routerů to stejné, pokud to je obyčejný TP-Link se stock firmwarem a ne třeba MikroTik a nebo něco s OpenWRT.


vpn22

Re:Provoz po HTTPS v produkci
« Odpověď #11 kdy: 14. 12. 2022, 13:29:22 »

To je jedna možnost. Druhá možnost je před ta zařízení dát reverzní proxy, která vyřeší certifikáty, a se zařízením bude komunikovat buď přes HTTP, nebo přes HTTPS se selfsigned certifikátem s dlouhou platností.

Vlastní CA se chci vyhnout.

Zopper

  • *****
  • 898
    • Zobrazit profil
Re:Provoz po HTTPS v produkci
« Odpověď #12 kdy: 14. 12. 2022, 13:41:37 »
Manuální obnovování certifikátů je peklo, kvůli kterému jsem v dobách před Let's Encrypt vůbec HTTPS nenasazoval. Vede to k chybám a pokud máte stovky webů, tak se z toho zblázníte. Automatizace je cesta, která to celé řeší stylem „nasaď a zapomeň“. Není potřeba nic vyvíjet, všechno je hotové, připravené k nasazení. Já na produkci používám ACME.sh, nasazení je jednoduché, dá se krásně automatizovat.

To vse je hotove a da se krasne automatizovat funguje tak maximalne, pokud mate dany certifikat na jednom serveru/sluzbe. Co v pripade, kdy certifikat je na X serverech? To uz to nasazeni neni tak jednoduche, ze?

A proč by to někdo dělal? To dává smysl při ruční obnově certifkátu, kdy je stejný certifikát všude proto, aby stačilo generovat jeden a pak se to jen rozkopíruje. Teď každý server může sám nechat vystavit svůj vlastní unikátní certifikát.

A pokud máte nějaké velké komplikované prostředí, kde to sdílení z nějakého důvodu fakt potřeba je, a kde se to nedá řešit interní CA + proxy, co to přebalí, jak to většinou dělají velké firmy... no, pak si můžete tu automatizaci upravit. Protože to už pak asi není garážová firmička se dvěma zaměstnanci.

Plus, vždycky je tu možnost vrátit se do starých časů, vytáhnout šekovou knížku a zaplatit si za certifikát s dvouletou platností a ruční správou. Let's Encrypt není jediný zdroj certifikátů.

Re:Provoz po HTTPS v produkci
« Odpověď #13 kdy: 14. 12. 2022, 15:24:34 »
Jak řešit certifikáty pro HTTPS na zařízeních, na kterých nemůže běžet ACME klient (tiskárny, routery...)? Vlastní CA mít nechci.

Je správná cesta generování certifikátů a DNS-challenge na Raspberry Pi a distribuce certifikátů na koncové za´rizení pomocí jejich API (pokud mají)?

zpravidla nenechávám si vydávat cert koncovým zařízením (nechci, aby za to mělo odpovědnost). Takže vydání přes DNS na extra zařízení, uložení do šifrované db (např. hasicorp vault, ale stačí klidně i gpg šifrování) a distribuce na daná zařízení. Pokud jde o routery, tak využívám buď jejich http api, mngm rozhraní nebo seriový port a cert jim tam nakopíruji, zpravidla se vždy nějaká cesta najde. Držím se ale pravidla, že pouze zařízení, které jsou určena pro veřejnou komunikaci mají veřejný certifikát, ostatní interní.

Re:Provoz po HTTPS v produkci
« Odpověď #14 kdy: 14. 12. 2022, 15:51:00 »

To je jedna možnost. Druhá možnost je před ta zařízení dát reverzní proxy, která vyřeší certifikáty, a se zařízením bude komunikovat buď přes HTTP, nebo přes HTTPS se selfsigned certifikátem s dlouhou platností.

Vlastní CA se chci vyhnout.
Ta reverzní proxy samozřejmě může vystavovat certifikáty od LE nebo jiného poskytovatele používajícího ACME standard. Třeba Caddy server takhle funguje a zprovoznění znamená stažení binárky a napsání asi 1 řádku konfigurace.