Jakoze je tezky mit renewal-hook, co v danem prostredi zajisti distribuci kam je potreba..?
Ne, neplete si pojmy. K jednomu doménovému jménu může být vystaven libovolný počet certifikátů. Takže když potřebujete mít na více serverech pro stejné doménové jméno certifikát, můžete mít na všech serverech ten stejný certifikát (pro stejnou klíčovou dvojici), nebo na každém serveru unikátní certifikát (pro unikátní dvojici klíčů), nebo mix – jeden certifikát bude na některých serverech, na jiných serverech bude jiný certifikát.
Pokud chcete unikátní certifikát na každém serveru, v ničem se to neliší od případu, kdy by ten server byl jen jeden (pokud serverů nejsou stovky, pak byste asi narazil na limity LE).
Pokud chcete certifikát vystavit jednou a rozkopírovat na více míst, na to existují různá řešení – záleží, zda chcete jen vystavit certifikát a jeho distribuci si chcete zajistit sám, nebo zda chcete kompletní systém, který zajistí i distribuci certifikátu (případně privátního klíče, ale tomu bych se spíš vyhnul).
Ukazte mi ta reseni.
Bavim se o situaci, kdy se kazdy den musi kontrolovat platnost certifikatu (protoze plati jen 3 mesice), coz znamena, ze kazda domena se po 2 mesicich ucastni procesu vystaveni noveho certifikatu, nasledne je potreba ten konkretni certifikat rodistribuovat na X serveru v ruznych zonach, klidne i ruznych typu (napr. kombinace reverzni proxy & web server). Konfigurace takovych serveru je v nejakem konfig managementu, certifikaty jsou casto v gitu stejne jako zdrojaky.
A pokud nemate kompletni CI/CD na ten konfig management, tak chci videt, jak v takovem pripade automaticky distribuujete/gitujete/rekonfigurujete/reloadujete ruzne sluzby na ruznych serverech.
Uniká mi architektura systému, který řešíte. Není to HTTPS, kde byste na loadbalancerech dělal terminaci TLS a rozvažování zátěže. Řešíte to pro stovky serverů, ale nemáte automatizovanou jejich konfiguraci. Pro jedno doménové jméno dáváte certifikát na X serverů – ani nevíme, zda jsou to servery stejné služby, nebo jsou to různé služby. Do toho nasazujete aplikace přímo z gitu.
Připadá mi, že máte N různých způsobů použití, každý řešíte jinak s jinou mírou automatizace, a na to se snažíte napasovat nějaký jeden univerzální systém pro výměnu certifikátů.
V uvazovanem pripade je to primarne https webova sluzba.
Provozujeme sluzbu somedomain.tld. Ta je terminovana na nekolika L7 balancerech (x serveru, kde se nahrava certifikat). Nasledne je dany certifikat nahrany i na web backendech (Y serveru) - spojeni mezi balancerem a web serverem je zasadne sifrovane.
Tyto servery se konfiguruji pres ansible, pricemz git je pouzit primarne jako dokumentace zmen. Nemame Tower, ani jiny automaticky CI/CD, takze zmeny se volaji manualne - zmen u nas neni tolik. Jenze u let's encrypt uz z principu manualni volani zmen je nepouzitelne.
A do toho by se hodilo pouzivat let's encrypt. Kdyz nasadim nejakeho centralniho bota, tak ten bot nebude mit seznam serveru, ani ansible to nevi, kde ty certifikaty jsou, dokud nenacte konfiguraci tech balanceru/web serveru. Takze se pak bavime klidne o spusteni konfigurace na stovkach serveru (i kdyz zmena bude jen na X+Y).
Pak je potřeba řešit ty L7 balancery. Záleží na tom, co je to zač – třeba Caddy má podporu pro ACME vestavěnou, pro nginx nebo HAproxy se dá použít jedna z mnoha implementací ACME klienta. Pokud je to nějaké HW řešení, F5 apod., potřebujete ty certifikáty obnovovat nějakým skriptem z venku (zase stačí si vybrat z výše odkázaného seznamu) a pak je jen do zařízení nahrát. Doporučuju v takovém případě používat validaci přes DNS – nepotřebujete pak žádnou spolupráci toho balanceru, tomu jen dáte hotový certifikát.
Osobně bych v takovém případě nedistribuoval jeden certifikát na všechny balancery, ale (pokud nemáte těch balancerů desítky a vejdete se do limitů LE) měl bych na každém balanceru samostatný certifikát s vzájemně posunutým datem vydání. Ať vám nekončí platnost všech certifikátů najednou, ale je to pěkně rozdistribuované. Ono se to sice obnovuje automaticky, takže by to mělo být jedno, ale jistota je jistota, k chybě může dojít i u vás i na straně LE.
Dále tam máte ty backend servery. Pokud na nich neodkážete výměnu certifikátů snadno zautomatizovat, dejte tam selfsigned certifikáty nebo certifikáty z vlastní autority s platností několik let. (Bacha na to, že jak se před pár měsíci přesvědčili ve Flexibee, deset let je už dost dlouhá doba na to, aby se zapomnělo, že vůbec někde takový certifikát je.) Loadbalancerům je to jedno, ty nepotřebují na straně backendu všeobecně uznávané certifikáty – nastavíte tam buď svou autoritu nebo ty selfsigned certifikáty.
Na sifrovane spojeni mezi balancery a backendy LE certifikat opravdu nepotrebujete. Na tento ucel muzete klidne pouzit interni CA a klidne certifikaty s delsi platnosti. Takze cely "problem" se razem smrskne na to, jak dostat cerfifikat na par balanceru. A to uz tu popsane mate vyse - realne muze byt kazdy balancer v tomto smeru autonomni.
Já to vaše řešení neprovozuju, takže pro něj nemám hotové řešení distribuce certifikátů. Když máte certifikáty (asi i s privátními klíči) v gitu vedle zdrojáků (což bych já nikdy neudělal), potřebujete se zaháčkovat do procesu vydání certifikátu, aby po stažení certifikátu byl provolán nějaký váš skript, který ten certifikát commitne a pushne do gitu. Na to mají různí klienti podporu. A nebo prostě můžete cronem sledovat úložiště certifikátů, a pokaždé, když se tam objeví nový certifikát, commitnout a pushnout ho.
Nebo si kupte komerční certifikát s platností jeden rok.