Separazione certificati SSL #23

Open
opened 2023-03-15 18:21:20 +00:00 by giomba · 2 comments
Owner

Problema

Oggi è scaduto (l'unico) certificato SSL per tutti i domini, e non ce ne siamo accorti in tempo.

Analisi

Come è potuto accadere?

  1. tempo fa è stato spento il browser web per il registry delle immagini docker, presso browser.docker.golem.linux.it, perchè:
  • il software era fuori supporto
  • a causa della sua scomodità non lo usava nessuno
  • un registry per le immagini docker è adesso integrato in gitea, dunque non servono più accrocchi esterni
  1. è stato rimosso il dominio dalla zona DNS
  2. è stata ignorata l'email di avvertimento di Let's Encrypt, perché "tanto scade quello vecchio, sicuramente ho già aggiunto quello nuovo" (assunzione che evidentemente era falsa)

Questo ha causato il mancato rinnovo del mega-certificato SSL per tutti i domini *.golem.linux.it, perché Let's Encrypt non riusciva più a fare la sua verifica, mancando il dominio dalla zona DNS, ma, allo stesso tempo, non essendo stato informato del cambiamento.

Questa serie di cause ha fatto sì che tutti i servizi accessibili tramite il proxy SSL fossero irraggiungibili (eg. mostravano errore di certificato scaduto).

Soluzione (temporanea)

Ho rigenerato manualmente il certificato con certbot, stavolta togliendo il dominio in questione dalla lista.

certbot certonly --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2" --standalone -d atena.golem.linux.it -d golem.linux.it -d git.golem.linux.it -d cloud.golem.linux.it -d blog.golem.linux.it -d wiki.golem.linux.it -d archivio.golem.linux.it -d build.golem.linux.it -d digitalecivile.golem.linux.it -d hub.docker.golem.linux.it -d cgi.golem.linux.it -d ci.golem.linux.it

Soluzione

Onde evitare che si verifichi di nuovo una situazione simile (o almeno, mitigare la sua catastroficità), sarebbe consigliabile generare N diversi certificati, uno per ogni dominio, da utilizzare nel proxy, così che, se anche ci si dovesse accidentalmente dimenticare di rinnovarne uno, non si precluda l'utilizzo di tutti gli altri servizi.

Possiamo farlo insieme in una serata di GOLEM Insiders.

## Problema Oggi è scaduto (l'unico) certificato SSL per tutti i domini, e non ce ne siamo accorti in tempo. ## Analisi Come è potuto accadere? 1. tempo fa è stato spento il browser web per il registry delle immagini docker, presso `browser.docker.golem.linux.it`, perchè: - il software era fuori supporto - a causa della sua scomodità non lo usava nessuno - un registry per le immagini docker è adesso integrato in gitea, dunque non servono più accrocchi esterni 2. è stato rimosso il dominio dalla zona DNS 3. è stata ignorata l'email di avvertimento di Let's Encrypt, perché "tanto scade quello vecchio, sicuramente ho già aggiunto quello nuovo" (assunzione che evidentemente era falsa) Questo ha causato il mancato rinnovo del mega-certificato SSL per tutti i domini `*.golem.linux.it`, perché Let's Encrypt non riusciva più a fare la sua verifica, mancando il dominio dalla zona DNS, ma, allo stesso tempo, non essendo stato informato del cambiamento. Questa serie di cause ha fatto sì che *tutti* i servizi accessibili tramite il proxy SSL fossero irraggiungibili (eg. mostravano errore di certificato scaduto). ## Soluzione (temporanea) Ho rigenerato manualmente il certificato con certbot, stavolta togliendo il dominio in questione dalla lista. ``` certbot certonly --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2" --standalone -d atena.golem.linux.it -d golem.linux.it -d git.golem.linux.it -d cloud.golem.linux.it -d blog.golem.linux.it -d wiki.golem.linux.it -d archivio.golem.linux.it -d build.golem.linux.it -d digitalecivile.golem.linux.it -d hub.docker.golem.linux.it -d cgi.golem.linux.it -d ci.golem.linux.it ``` ## Soluzione Onde evitare che si verifichi di nuovo una situazione simile (o almeno, mitigare la sua catastroficità), sarebbe consigliabile generare N diversi certificati, uno per ogni dominio, da utilizzare nel proxy, così che, se anche ci si dovesse accidentalmente dimenticare di rinnovarne uno, non si precluda l'utilizzo di tutti gli altri servizi. Possiamo farlo insieme in una serata di _GOLEM Insiders_.
Member

Uptime-Kuma ha l'opzione di monitorare la scadenza dei certificati:

image

image

Si potrebbe usare per mandare una notifica via Telegram

Inoltre, c'è un motivo per cui non implementare un renew automatico?

Uptime-Kuma ha l'opzione di monitorare la scadenza dei certificati: ![image](/attachments/c952ff39-bc3d-4d1c-891c-b68d357a9acd) ![image](/attachments/84cd47d1-f6ee-4df8-8c85-6c1801638c2b) Si potrebbe usare per mandare una notifica via Telegram Inoltre, c'è un motivo per cui non implementare un renew automatico?
Author
Owner

I certificati scadono ogni 3 mesi e si rinnovano già automaticamente.

Let's Encrypt già ci avverte quando stanno per scadere i certificati, solo che le notifiche di un certificato in scadenza per "dimenticanza" sono identiche a quelle di un certificato in scadenza per "scelta deliberata", in quanto non è possibile revocare un certificato rilasciato da Let's Encrypt, ma solo lasciarlo scadere.

Probabilmente non sono stato molto chiaro, ma il problema è stato causato da perdurata negligenza, dovuta però al fatto che il comportamento di Let's Encrypt è simile a quello di Pierino quando grida "al lupo": ogni volta che decido di fare a meno di un certificato, non posso fare altro che lasciarlo scadere, e quindi farmi arrivare N-mila email, che alla fine tendo a ignorare.

Se invece separiamo i certificati, le email sono più chiare (perché si riferiscono solo a un sottodominio, e non a "tutti"), e si riduce il rischio di un errore umano.

Comunque mi piace anche il suggerimento di mettere Update-Kuma ad eseguire questo controllo: magari gli impostiamo un alert misurato in maniera tale che, normalmente, si vedano solo quelli di Let's Encrypt (a 30 giorni dalla scadenza), e solo successivamente inizi a mandare notifiche anche Update-Kuma, in maniera tale che si capisca che la situazione "è seria" e richiede più attenzione.

Programmerei l'attività per un martedì sera in Officina, anche se in questo periodo sono un po' incasinato e non riesco a passare spesso.

I certificati scadono ogni 3 mesi e si rinnovano già automaticamente. Let's Encrypt già ci avverte quando stanno per scadere i certificati, solo che le notifiche di un certificato in scadenza per "dimenticanza" sono identiche a quelle di un certificato in scadenza per "scelta deliberata", in quanto non è possibile revocare un certificato rilasciato da Let's Encrypt, ma solo lasciarlo scadere. Probabilmente non sono stato molto chiaro, ma il problema è stato causato da perdurata negligenza, dovuta però al fatto che il comportamento di Let's Encrypt è simile a quello di Pierino quando grida "al lupo": ogni volta che decido di fare a meno di un certificato, non posso fare altro che lasciarlo scadere, e quindi farmi arrivare N-mila email, che alla fine tendo a ignorare. Se invece separiamo i certificati, le email sono più chiare (perché si riferiscono solo a un sottodominio, e non a "tutti"), e si riduce il rischio di un errore umano. Comunque mi piace anche il suggerimento di mettere Update-Kuma ad eseguire questo controllo: magari gli impostiamo un alert misurato in maniera tale che, normalmente, si vedano solo quelli di Let's Encrypt (a 30 giorni dalla scadenza), e solo successivamente inizi a mandare notifiche anche Update-Kuma, in maniera tale che si capisca che la situazione "è seria" e richiede più attenzione. Programmerei l'attività per un martedì sera in Officina, anche se in questo periodo sono un po' incasinato e non riesco a passare spesso.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: golem/morgan#23
No description provided.