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
Code language: PHP (php)

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
Code language: PHP (php)

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

Analisi del dataset “Theater History of Operations (THOR) Data: World War II”

Il GULLi ha lanciato l’iniziativa per una propria analisi del dataset “Theater History of Operations (THOR) Data: World War II“.[1] Il dataset riporta i dati dei bombardamenti aerei degli alleati durante la seconda guerra mondiale e pensiamo che l’analisi possa creare diversi interessi sia storici (quando, dove e come sono avvenuti i bombardamenti) che tecnici (come analizzare i file CSV con Python, geopandas, SQL). Per favorire l’iniziativa i dati sono stati caricati anche su un database PostgresSQL sul server del GULLi, mettendo così a disposizione a chiunque fosse interessato una base di dati condivisa (alcuni dati sono stati e dovranno essere corretti) accessibile da chiunque.

Queste alcune delle rappresentazioni che possono essere realizzate:

Bombardamenti alleati nel teatro europeo
Bombardamenti in Toscana

Bombardamenti per obiettivi città di Livorno
(tonnellate di esplosivi)

Interessi storici

L’iniziativa aspira a raccogliere aspetti e episodi storici, magari anche sotto forma di piccoli racconti, legati ad eventi identificati sui dati. A solo titolo di esempio, è possibile calcolare la quantità totale di materiale bellico sganciato sopra ogni paese:

  • Germania 1.991.588,00 t
  • Francia 820,945.00 t
  • Italia 417,004.62 t
  • etc…

Sarebbe interessante conoscere come e dove venivano prodotti quantitativi così ingenti.

E’ possibile estrarre le date di inizio e di fine dei bombardamenti in una determinata città o area geografica. Sarebbe interessante collegare nozioni storiche a questi periodi.

In rete è disponibile molto materiale storico, solo a titolo di riferimento segnaliamo:

Interessi tecnici

L’iniziativa offre l’opportunità di imparare l’uso di diversi strumenti informatici, linguaggi di programmazione, applicazioni più o meno complessi, formati standard di dati, etc…. Fra questi sono già stati identificati:

  • Database PostgreSQL : un database server che il GULLi ha installato e che mette a disposizione
  • Formato CSV: il formato di testo più comune per i dati testuali
  • Python: uno di più potenti linguaggi del momento
  • Jupyter: un ambiente per sviluppare le procedure di analisi in Python
  • PGAdmin: una interfaccia utente per accedere
  • SQL: linguaggio per l’interrogazione e gestione delle basi di dati 

Ed inoltre l’uso di librerie Python come Pandas, GeoPandas, Folium e Matplotlib

Strumenti

Il GULLi mette a disposizione sul proprio account Gitlab spazi web per condividere:

  • Interrogazioni SQL da usare nelle applicazioni o direttamente sull’interfaccia PgAdmin
  • Applicazioni Python o altro, Jupiter Notebook
  • Immagini e grafici

Risultati e articoli verranno pubblicati sul sito web del GULLi (https://linux.livorno.it).

Analisi

Le analisi potranno prendere in considerazione uno o più eventi storici e cercheranno testimonianze, relazioni ed approfondimenti nei dati a disposizione sul database. Viceversa, si cercherà di trovare testimonianze storiche a partire dai dati delle missioni registrati sui database.

Elenco delle analisi disponibili

Per collaborare all’iniziativa o per qualsiasi informazione info@linux.livorno.it

Desktop remoto attraverso canali sicuri

Oggi più che mai abbiamo bisogno di accedere in remoto ad altri computer, per fornire assistenza, per scopi didattici, per esigenze lavorative di smart working ma anche per accedere a dispositivi presenti nelle reti di casa. Ma giustamente l’accesso ai computer all’interno delle reti locali casalinghe è protetto dalle caratteristiche dei router e modem che i provider forniscono. Quindi in configurazioni standard non è possibile, o almeno semplice, concedere l’accesso ai nostri computer anche se questo è a nostro beneficio. Esistono diverse soluzioni anche commerciali per permettere assistenza remota, qui ne vediamo una completamente open source e di cui abbiamo il completo controllo.

Continua a leggere Desktop remoto attraverso canali sicuri