Let's Encrypt a loadbalancer

Stilett

Let's Encrypt a loadbalancer
« kdy: 21. 09. 2016, 11:06:45 »
Ahoj. Chtěl bych použít certifikát od Let's Encrypt včetně automatické obnovy v nasazení s loadbalancerem. HTTP požadavek vyřídí vždy (víceméně náhodně) jeden z uzlů za loadbalancerem. Mám centrální stroj, který je zdrojem pro jednotlivé uzly a může na ně něco nahrát, stejně tak na loadbalancer.

Proces by tedy měl ideálně proběhnout na centrálním stroji takto:
  • Vytvořím požadavek na certifikát (nebo jeho obnovu).
  • Challenge nakopíruji na všechny uzly do cesty viditelné pod .well-known.
  • Nechám autoritu ověřit challenge.
  • Získám nový certifikát a nahraji ho do loadbalanceru.

Problém je, že oficiální klient certbot neumožňuje oddělit generování challenge od ověření autoritou, takže nemám, kdy nakopírovat challenge na všechny uzly. Přímo na jednom uzlu to nemohu udělat, protože nevím, který uzel vyřídí HTTP požadavek od autority.

Jak byste to řešili? Můžete doporučit nějakého alternativního klienta pro LE, který umožní provést uvedený postup?


Re:Let's Encrypt a loadbalancer
« Odpověď #1 kdy: 21. 09. 2016, 11:26:27 »
Nejjednodušší by bylo svést všechny požadavky na tu adresu na nějaký centrální stroj. Tedy vlastně udělat reverzní proxy na těch frontendech. „Když se někdo zeptá na soubor ve .well-known, pošli dotaz do 192.168.1.5 a vrať tazateli odpověď.“ Pak by stačilo, aby ten centrální stroj vytvořil požadavek a ten pokus o stažení challenge k němu doputuje a on na něj odpoví.

Re:Let's Encrypt a loadbalancer
« Odpověď #2 kdy: 21. 09. 2016, 11:41:15 »
Další možnost je neověřovat doménu přes HTTP ale přes DNS. Pokud máte DNS ve správě, může to být jednodušší, než směřovat požadavek přes loadbalancery na jedno místo.

Stilett

Re:Let's Encrypt a loadbalancer
« Odpověď #3 kdy: 21. 09. 2016, 18:47:51 »
Díky za odpovědi. Uniklo mi, že mohu s Let's Encrypt použít i DNS ověření. Návrh řešení budu muset ještě dotáhnout (není např. úplně ideální, aby na centrálním serveru byl webserver), ale každopádně to jsou dobré náměty.

Asi se nakonec přikloním k řešení přes DNS, protože nebude zasahovat do loadbalanceru.

Jenda

Re:Let's Encrypt a loadbalancer
« Odpověď #4 kdy: 22. 09. 2016, 01:46:54 »
acme-tiny je tak jednoduchý, že je to vidět, kam to dohackovat.


j

Re:Let's Encrypt a loadbalancer
« Odpověď #5 kdy: 22. 09. 2016, 18:48:55 »
Problém je, ... oficiální klient ...
Reseni je jednoduchy, nepouzivej ten bastl.

Jinak viz vejs, ale porad tu je pomerne slusnej vyber ruznych scriptu, ktery (prakticky vsechny) fungujou daleko lip a jsou pomerne snadno pristupny pro vsemozny modifikace.

BTW: Pocitam ze v nouzi nejvyssi by asi nebyl problem rict balanceru, ze rozsah IPcek le ma posilat na jeden konkretni srv.

Homeatcloud

Re:Let's Encrypt a loadbalancer
« Odpověď #6 kdy: 24. 09. 2016, 08:34:41 »
Ahoj!
V infrastruktuře cloudu máme na API requesty a webové stránky nasazený loadbalancer HAProxy. Ten je ještě ztrojený a virtuální IP adresu hlídá keepalived. Celá infrastruktura je spravovaná Saltem.

Nasazoval jsem do tohohle LetsEncrypt, a to tak, že v HAProxy je výhybka, která všechny požadavky na ověřovací adresu přesměrovává na stroj s repozitářem konfigurace. Tam běžně žádný webserver není. Používám ten vestavěný v Certbotu. Ten mi ověří doménu a uloží certifikát. Saltem pak ten certifikát nasadím na všechny stroje s HAProxy a restartuju ho.
Recepty zde:
https://github.com/vondrt4/salt-formula-haproxy/commit/224498a1329905e9c8a059f80ca30d0f30155460
https://github.com/vondrt4/salt-formula-letsencrypt/commit/bebbe0f9d0e7469349b18e0c34f4ce5fcaa595b1