Skocz do zawartości
Zaloguj się, aby obserwować  
Fizyda

CertBot i restart konkretnych usług w zależności od odnowionych certyfikatów

Polecane posty

Szukam sposobu na restart/reload konkretnej usługi jeśli zostaje odnowiony certyfikat dla specyficznej domeny.

 

certbot renew --renew-hook "service usl1 restart & service usl2 restart" mi za bardzo nie rozwiązuje sprawę bo jeśli zaktualizowany będzie certyfikat który nie jest użyty w usl1 i usl2 to po co je restartować.

 

Myślałem o dodaniu czegoś do renewal config dla konretnej domeny, może nawet parametru renew-hook tylko pytanie w której sekcji dopisać i czy zadziała. Dokumentacji na temat plików renewal config nie znalazłem (/etc/letsencrypt/renewal/domena.com.conf)

 

Nie da się też z tego co wiem zrobić renew dla konkretnej domeny tak by odnowić certyfikat dla domen z usługami "specyficznymi" które wymagają restartu, a potem resztę.

 

Ma ktoś jakiś pomysł, może gotowe rozwiązanie. Mi nic do głowy nie przychodzi, google też nic nie podpowiada.

Edytowano przez Fizyda (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jakbyś przeczytał dokumentację narzędzi, które używasz, zamiast działać na zasadzie "sprawdzę w google i zrobię coś na szybko" to byś znalazł zarówno --pre-hook jak i --post-hook, oraz klarowną i konkretną informację:

 

 

The hooks will only be run if a certificate is due for renewal, so you can run this command frequently without unnecessarily stopping your webserver

 

Ale po co, tylko frajerzy czytają dokumentację, łatwiej napisać na forum i niech ktoś inny przeczyta ;).

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Archi z całym szacunkiem do Ciebie, ale powiedz mi jaki to ma związek z tym o co pytałem? Ja rozumiem, każdy ma prawo mieć gorszy dzień, być zmęczonym też mi się zdarzają takie posty. Oba haki zresetują mi usługi zawsze. To lepszy jest już ten o którym wspomniałem bo resetuje tylko w momencie gdy jakiś certyfikat zostanie odnowiony.

 

Natomiast jeśli chodzi o rozwiązanie problemu jaki przedstawiłem w temacie, znalazłem wczoraj, a raczej dziś w nocy. Niestety nie da się tego zrobić przy pomocy haków, trzeba napisać własny skrypt do obsługi haka o którym wspomniałem w pierwszym poście czyli: --renew-hook, następnie wykorzystać zmienną $RENEWED_DOMAINS w której jest lista domen dla których zaktualizowano certyfikaty.

Wystarczy w pętli zrobić if-elif-fi do obsługi konkretnych domen i resetowania konkretnej usługi dla. Od siebie mogę dodać że w pętli nie powinno się resetować usługi która wymaga resetu dla aktualizacji jednej z wielu różnych domen, ponieważ będzie ona resetowana kilkukrotnie jeśli zaktualizowanych będzie więcej certyfikatów. Lepiej ustawić sobie flagę i zresetować usługą poza pętlą jeśli wystąpi jedna z domen.

 

Swoją drogą, mała informacja na przyszłość, w certbocie ma zostać coś zmienione w kolejnych wersjach jeśli chodzi o odnawianie certyfikatów, tak by takie rzeczy były łatwiejsze.

Edytowano przez Fizyda (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A, to jak wiesz lepiej to nie będę na następny raz podpowiadał gdzie można znaleźć odpowiedź na takie rzeczy, widać niepotrzebnie próbuję pomóc :). I tak, da się to zrobić bez próby zrobienia tego na około tak jak zasugerowałeś, tylko trzeba zacząć czytać te długie teksty zamiast szukać na google jak to zrobić szybko i "aby działało", ale co kto lubi ;).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Archi czytałem to co jest w dokumentacji zanim mi ją zacytowałeś. To co proponujesz owszem zadziała w momencie gdy będę chciał zresetować usługę X jeśli jakikolwiek certyfikat zostanie zaktualizowany.

 

Ja potrzebowałem rozwiązanie:

gdy certyfikat dla domeny X zostanie zaktualizowany resetuj usługę X

gdy certyfikat dla domeny Y zostanie zaktualizowany resetuj usługę Y

gdy certyfikat dla domeny A,B lub C zostanie zaktualizowany resetuj usługę Z

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W takim razie polecam się zastanowić czy masz odpowiednią konfigurację swoich usług, bo jeśli tak jest to reload takiego nginxa, postfixa czy czegokolwiek co może być współzależne od certyfikatu LE powinien być a) bezkonfliktowy i b) bezproblemowy - usługa powinna sama stwierdzić które elementy trzeba zreloadować, i czy jakieś w ogóle.

 

Tak jest w przypadku nginxa i postfixa, oraz wielu innych podobnych usług, które mogą zależeć od certyfikatów, i reload bez powodu nie wpływa w żaden sposób na ich dostępność czy status.

 

Jeśli serio w skrypcie restartujesz usługi w oparciu o certyfikaty, które zostały odnowione to robisz to źle. Łamiesz zasadę pojedynczej odpowiedzialności w systemach UNIX i zmuszasz LE to odwalania roboty kogoś innego. To usługa ma dostać powiadomienie o możliwości zapotrzebowania na reload, i podjąć decyzję czy w jej stanie takowy reload jest możliwy i potrzebny. Dodawanie własnej logiki restartu różnych usług w zależności od tego które certyfikaty zostały odnowione jest okropne i kopnie Cię w tyłek jak tylko zaczniesz głębiej na tym bazować.

 

Ale rób co uważasz, dzięki takim osobom jak ty mam z czego żyć :).

Edytowano przez Archi (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Tak jest w przypadku nginxa i postfixa, oraz wielu innych podobnych usług, które mogą zależeć od certyfikatów, i reload bez powodu nie wpływa w żaden sposób na ich dostępność czy status.

 

Widzisz, teraz napisałeś coś co faktycznie jest pouczające i faktycznie nie pomyślałem w ogóle o tym by użyć service postfix reload. Od razu gdy czytałem dokumentacje certbota pomyślałem tylko o restarcie, a tego chciałem uniknąć.

Gdy podałeś mi haki od razu też pomyślałem o restarcie, dlatego nie mogłem zrozumieć w czym miałoby mi to pomóc. Nie zastanawiałem się do tej pory czym różni się reload od restartu i nie sądziłem że reload robi takie "inteligentne" przeładowanie. Dopiero teraz gdy mi to wytłumaczyłeś wszystko stało się jasne. Dzięki za Twoją odpowiedź ;).

Edytowano przez Fizyda (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×