Distribuce certifikátů Let's Encrypt pomocí Ansible

Distribuce certifikátů Let's Encrypt pomocí Ansible
« kdy: 11. 09. 2019, 10:08:35 »
Ahoj,

mam naimplementovanou distribuci certifikatu pro TLS sluzby. Jenze mam problem, jak tohle udelat v pripade letsencrypt automaticky. Kdybych mel puppet, tak by si z hlediska klienta sam overoval, zda ma shodne soubory jako na cetralnim node, ale jak tohle udelat v ansible? Rad bych se vyhnul vsemoznym cron/syncthing apod metodam nastavenych primo na danych serverech. Metoda by byla dns-01 (http-01 je nepouzitelna v tomhle rozsahu). Jenze to, jake certifikaty ktera sluzba potrebuje, mam defaultne definovane v ramci group_vars/project, ale ne v ramci host_vars/fqdn, coz to dela slozitejsi.

Jake je rozmne reseni? Uzuz jsem rozhodnut pro zakoupeni potrebneho wildcard certfikatu, ktery pokryje problem vyse, ale to vyresi jen danou (sub)domenu.

Diky.
« Poslední změna: 11. 09. 2019, 10:18:33 od Petr Krčmář »


Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #1 kdy: 11. 09. 2019, 13:10:08 »
s ansible uz par rokov nerobim, takze bohuzial ti neporadim. ale tie nervy s LE poznam a preto som presiel na CloudFlare kde mas 10 rocny wildcart certifikat zdarma nemusis riesit tieto LE hovadiny s certifikatmi ktorych zivotnost je naprosto smiesna.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #2 kdy: 11. 09. 2019, 15:29:59 »
Rad bych se vyhnul vsemoznym cron/syncthing apod metodam nastavenych primo na danych serverech.
Pokud se vyhneš nejjednodušší a nejpřímočařejší cestě, zbudou ti jenom horší, zbytečně komplikovaná řešení.

A vůbec nejjednodušší cesta je terminovat TLS na jednom stroji. Ale to asi víš.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #3 kdy: 11. 09. 2019, 15:43:48 »
Rad bych se vyhnul vsemoznym cron/syncthing apod metodam nastavenych primo na danych serverech.
Pokud se vyhneš nejjednodušší a nejpřímočařejší cestě, zbudou ti jenom horší, zbytečně komplikovaná řešení.

A vůbec nejjednodušší cesta je terminovat TLS na jednom stroji. Ale to asi víš.

Jo, pokud to bezi na jednom stroji, tak to je brnkacka. Ale nam uz vice veci bezi v HA, takze treba ty certifikaty pro tu samou domenu potrebuji na vice strojich najednou...A to uz ta brnkacka neni.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #4 kdy: 11. 09. 2019, 16:39:05 »
Ale nam uz vice veci bezi v HA, takze treba ty certifikaty pro tu samou domenu potrebuji na vice strojich najednou...A to uz ta brnkacka neni.
Tak je to otázka jednoho účtu a jednoho řádku v crotabu :)

Pokud tím HA myslíš master-master a zároveň nechceš nic řešit při výpadku ručně, tak to brnkačka není. Ale pokud fakt máte tenhle setup, tak máte určitě bambilion daleko složitějších problémů než tenhle :)


Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #5 kdy: 11. 09. 2019, 17:09:27 »
Já asi nerozumím, jak to souvisí s Ansible – to chcete periodicky spouštět Ansible? Pokud ano, přijde mi to jako ohýbání Ansiblu…

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #6 kdy: 11. 09. 2019, 19:14:39 »
Ten popis problemu je docela zmateny, ptas se jak distribuovat LE certifikaty na jine servery?
Kód: [Vybrat]
- name: Copy certificates
  hosts: "{{hosts['ssl-enabled-host.tld']}}"
  tasks:
      synchronize:
        src: "{{ item }}"
        dest: "{{ item }}"
        mode: pull
      delegate_to: "{{hosts['certbot.tld']}"
      with_items:
       - "/etc/ssl/lets_cert.crt"
Ber to s rezervou, psal jsem to z hlavy.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #7 kdy: 11. 09. 2019, 19:21:53 »
Ber to s rezervou, psal jsem to z hlavy.
Musí se to ale dělat pravidelně a automaticky - po každém obnovení certifikátu. Ne ručně ansiblem...

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #8 kdy: 12. 09. 2019, 08:46:52 »
My to resime cronem a ansiblem, ktery proste synchronizuje centralni ulozni misto s klientama. Pouzivame dehydrated pro plneni challengu, coz je ciste bashovska implementace certbota. (tady me trochu znejistila otazka vyse). Puvodne jsme to delali z centralniho nodu, ale ted se nam velmi osvedcilo dynamicke pridavani DNS TXT zaznamu. A do budoucna planujeme generovat DNS klic pro kazdej stroj a budou si to delat cele samy.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #9 kdy: 12. 09. 2019, 09:30:51 »
Já asi nerozumím, jak to souvisí s Ansible – to chcete periodicky spouštět Ansible? Pokud ano, přijde mi to jako ohýbání Ansiblu…

Co je na tom k ohybani? Pokud si rekneme, ze pravidelne spousteny certbot/dehydrated aktualizuje certifikaty, tak na zaklade toho se muze spustit reconfig pomoci ansible (klasicky CI postup).

Problem se odviji zhruba od tohoto:
1] ansible potrebuje mit pristup k aktualnim crt pripadne inicializovat vytvoreni i pro konfiguraci
2] je potreba deploy na ruzne typy serveru, ktere jsou redundantni (napr. haproxy, web servery atd), nemluve o pripadny kontejnerech - ruzny format certifikatu
3] neni centralni seznam domen a serveru. Kazdy projekt ma v group_vars/project_name ulozene domeny. Mohl bych to ukladat do host_vars/fqdn, coz by resilo chybejici centralni seznam, ale zase bych duplikoval veskere parametry mezi vice konfigy(co je mensi zlo..., resp. co je asi tak optimal zpusob ukladani seznamu kombinace domena/server)
4] neni mozne spoustet certbot primo ze serveru - viz 1] a 2]

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #10 kdy: 12. 09. 2019, 09:31:45 »
My to resime cronem a ansiblem, ktery proste synchronizuje centralni ulozni misto s klientama. Pouzivame dehydrated pro plneni challengu, coz je ciste bashovska implementace certbota. (tady me trochu znejistila otazka vyse). Puvodne jsme to delali z centralniho nodu, ale ted se nam velmi osvedcilo dynamicke pridavani DNS TXT zaznamu. A do budoucna planujeme generovat DNS klic pro kazdej stroj a budou si to delat cele samy.

Zhruba takhle to vidim. Ale prave ten deployment...jak resite vazbu vztah certifikat/typ sluzby/konkretni server?

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #11 kdy: 12. 09. 2019, 09:51:51 »
na zaklade toho se muze spustit reconfig pomoci ansible (klasicky CI postup).
Spis CD, ale to je jedno.

Jsi si jisty, ze automaticke spousteni Ansiblu v ostrem modu je to, co chces? Ma to minimalne dva problemy:
1. jakakoli chyba v konfiguraci se automaticky promitne na servery (je potreba kontrolovat, co zmena zpusobi, bokem)
2. server s ansiblem musi mit permanentne k dispozici root pristup na vsechny konfigurovane servery - jeho kompromitace znamena kompromitaci vseho

Slo by samozrejme omezit scope pomoci tagu, ale pak by ansible efektivne delal to, co by delal ten rsync, a moc nevidim duvod jeho pouziti.

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #12 kdy: 12. 09. 2019, 13:52:05 »
inak nebude pre teba lepsie pouzit skor etcd+confd namiesto ansiblu?

Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #13 kdy: 12. 09. 2019, 14:42:05 »
My to resime cronem a ansiblem, ktery proste synchronizuje centralni ulozni misto s klientama. Pouzivame dehydrated pro plneni challengu, coz je ciste bashovska implementace certbota. (tady me trochu znejistila otazka vyse). Puvodne jsme to delali z centralniho nodu, ale ted se nam velmi osvedcilo dynamicke pridavani DNS TXT zaznamu. A do budoucna planujeme generovat DNS klic pro kazdej stroj a budou si to delat cele samy.

Zhruba takhle to vidim. Ale prave ten deployment...jak resite vazbu vztah certifikat/typ sluzby/konkretni server?

Uplne nevim jestli odpovim presne, protoze jsem asi nepochopil otazku... Mam proste yaml soubor co rika:
1) jaka domena
2) jake aliasy
3) kam se ma certifikat na cili nahrat a s jakymi opravneni
+ jsem dobastlil skript, co vyrobi i mene tradicni formaty, jako .pks a ty javovsky hruzy.

Nejsem si jistej, ze je to ale dobrej zpusob, ale funguje nam to  ::) Psal jsem to na zacatku sveho pocinani na soucasnem pracovisti s malou zkusenosti s ansiblem.

AgentK

  • ***
  • 129
  • Evolve or die!
    • Zobrazit profil
    • E-mail
Re:Distribuce certifikátů Let's Encrypt pomocí Ansible
« Odpověď #14 kdy: 12. 09. 2019, 17:59:56 »
K tem wildcard certifikatum ... je to zlo. Stejna vec plati pro naduzivani jednoho keypairu obecne. Pokud je moznost, nedelal bych to.
Krome pohodli je nutny taky myslet na to, co se stane, pokud klic leakne, a co se stane mezi tim a momentem nez na to prijdete a napravite.
Cim na vic je na serverech jeden keypair, nebo nedejboze wildcard cert, tim zranitelnejsi celou infra mate a tim vic adidas to je.

Nekdy to nejde jinak. Ale na to, jestli to je ta Vase situace si odpovite urcite sam.

-K-