Il 25 Agosto Linux compie 30 anni

30 anni di linux

Il 25 Agosto Linux compie 30 anni! Il G.U.L.Li ha seguito gran parte della sua vita, vivendo la sua crescita e la sua sempre più ampia diffusione e quindi, nel nostro piccolo, abbiamo contribuito al suo sviluppo. Il termine “Linux” si è evoluto in tutti questi anni: dal nome del kernel, del cuore del sistema operativo è diventato il nome di una numerosa famiglia di oltre 500 differenti distribuzioni, che sono andate a popolare oltre 4 milioni di computer nel mondo. 

Ma cosa più importante Linux ha creato tantissime comunità di appassionati che condividono la conoscenza, conoscenza che si estende dal software all’hardware che lo esegue, agli applicativi anch’essi open source, a tutto ciò che direttamente o indirettamente ha una relazione con Linux.

E voi come usate Linux? Quali sono gli aspetti che vi appassionano, che vi piacciono? Quali sono le cose che vorreste vedere migliorate? Cosa augurate a Linux?

Mandateci anche solo poche righe con le vostre risposte, proveremo insieme a capire dove è arrivato Linux in 30 anni di cammino! Potete raggiungerci via:

Mail: info@linux.livorno.it
Twitter: https://twitter.com/gulli_linux
Facebook: https://www.facebook.com/luggulli/
Telegram: https://t.me/joinchat/TROIJGd9Vt4sxVEq

Come esportare i certificati di traefik

In seguito alla sostituzione del reverse proxy nginx con traefik abbiamo riscontrato una mancanza nei servizi di posta ospitati sul server.
Purtroppo questi ultimi avevano la necessita dei certificati TLS che solitamente vengono generati per la navigazione web, ad esempio il certificato del dominio linux.livorno.it.

Fino a quel momento i servizi di posta utilizzavano i certificati generati dal programma certbot (let’s encrypt), ma in seguito alla migrazione verso traefik i certificati venivano direttamente gestiti da lui, senza la necessità di utilizzare un programma esterno al reverse proxy come certbot.

Traefik però salva i propri certificati in un file dal nome acme.json, quindi in modo differente rispetto ai soliti file privkey.pem e fullchain.pem.
Come soluzione è stato pensato uno shell script per convertire parti del contenuto json in file pem.

#!/bin/sh

cd /srv/traefik/

ACME=`cat acme.json`
CERTIFICATES=`echo $ACME | jq '.myresolver.Certificates[]'`
DOMAIN_CERTIFICATE=`echo $CERTIFICATES | jq 'select( .domain.main == "linux.livorno.it" )'`

KEY_B64=`echo $DOMAIN_CERTIFICATE | jq -r '.key'`
CERT_B64=`echo $DOMAIN_CERTIFICATE | jq -r '.certificate'`

echo $KEY_B64 | base64 --decode > certificates/privkey.pem
echo $CERT_B64 | base64 --decode > certificates/fullchain.pem

In questo breve guida non approfondirò l’utilizzo di jq, maggiori info qui.

Riga 5 – Lettura del file acme.json e salvataggio del contenuto in un variabile
Riga 6 – Salvo in una variabile la lista Certificates del dizionario myresolver
Riga 7 – Il comando select seleziona ogni elemento della lista Certificates che ha il valore linux.livorno.it nella chiave name del dizionario domain. Gli elementi selezionati vengono salvati in una variabile.
Righe 9-10 – Vengono salvate in due variabili i valori delle chiavi key e certificate.
Righe 12-13 – Vengono decodificate in base64 le variabili e salvato il contenuto in due file, privkey.pem e fullchain.pem.

Un ultimo passo

Traefik mantiene aggiornati i certificati e non li fa scadere, ma anche noi dovremo aggiornare i file pem generati dal nostro script affinché non scadano.
La soluzione migliore è usare crontab, tramite cui possiamo inserire un comando temporizzato.

# "crontab -e" è solitamente il comando modificare crontab
0 0 * * 0 /usr/bin/sh /srv/traefik/esporta-certificati.sh >/dev/null 2>&1

Il valore 0 0 * * 0 esegue il comando ogni domenica alla mezzanotte.