My boring Blog

Home page di Mauro Frigerio

Certificati origine di Cloudflare in Traefik

23-07-2022 Tempo di lettura 3 minuti article

Utilizzando Cloudflare come DNS provider per i propri domini è possibile sfruttare i suoi certificati SSL per assicurare i propri siti web. Così da non dover lottare con Traefik e Let’s Encrypt per generare i propri certificati.

Questa guida è anche utile se si usano i domini gratuiti descritti in questo post, perché Cloudflare blocca la creazione di certificati tramite Let’s Encrypt.

Principio

Cloudflare crea un certificato dedicato che permette al server di comunicare solo con i server di Cloudflare. Il certificato non è riconosciuto come valido dai vari browser. I proxy di Cloudflare forniranno poi un certificato valido e riconosciuto da tutti i maggiori browser.

Certificato origine Cloudflare

Il certificato origine di Cloudflare permette di comunicare in modo sicuro (HTTPS) tra il tuo server e quello di Cloudflare. Una comunicazione diretta tra il tuo server e un browser è possibile, ma il browser non riconosce come valido il certificato fornito.

Come generare il certificato origine

  1. Fare il login sul dashboard di Cloudflare e aprire le impostazioni del dominio interessato

  2. Nel menu SSL/TLS e poi Panoramica attivare l’opzione modalità Completo (Strict)

  3. Nel menu SSL/TLS e poi Server di origine è possibile generare il certificato cliccando su Crea certificato. Le opzioni di default dovrebbe già essere quelle corrette, quindi cliccare sul pulsante Crea in basso.

  4. Copiare e salvare in un file dal nome che scegli tu (consiglio nome-dominio.key) la chiave privata

  5. Copiare e salvare in un file dal nome che scegli tu (consiglio nome-dominio.pem) il certificato generato

  6. Salvare i file in una cartella accessibile dal container docker di Traefik

Configurazione Traefik

  1. Nel docker-compose di Traefik aggiungere la cartella dove è stato salvato il certificato di Cloudflare, è possibile utilizzare contemporaneamente anche altri certificati come quelli di [Let’s Encrypt[(https://letsencrypt.org/). In questo caso la cartella si chiama: cert_traefik_examples_tk, roalla fine della riga indica a docker di collegare in sola lettura la cartella.
volumes:
      - /var/run/docker.sock:/var/run/docker.sock  
      - /home/user/docker/traefik/acme.json:/acme.json
      - /home/user/docker/traefik/FileProvider/:/FileProvider/
      - /home/user/docker/traefik/cert_traefik_examples_tk:/cert_traefik_examples_tk:ro
  1. Aggiungere nella configurazione statica di Traefik le informazioni sulla posizione e il nome del certificato e della chiave. L’esempio sotto è per un file .toml
[[tls.certificates]]
  certFile = "cert_traefik_examples_tk/cert_traefik_examples_tk.pem"
  keyFile = "cert_traefik_examples_tk/cert_traefik_examples_tk.key"
  1. Ricreare il container di Traefik con il comando
sudo docker-compose up -d traefik

Conclusione

Questa soluzione è l’unica applicabile se si usa Cloudflare per gestire domini gratuiti come .tk. L’inconveniente però è il fatto che non si comunicherà mai in locale con il server ma sempre con i server di Cloudflare. Se disponete di un collegamento a internet poco performante allora non è la soluzione ideale (doppio del traffico, andata e ritorno da Cloudflare). Il vantaggio è che il certificato generato è valido per ben 15 anni e non si deve rinnovare il tutto ogni anno (limiti imposti da Apple).


Crediti Ispirazione articolo da guida di Romain Boulanger Foto copertina di Rúben Gál da Pixabay