Certificati origine di Cloudflare in Traefik
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
Fare il login sul dashboard di Cloudflare e aprire le impostazioni del dominio interessato
Nel menu
SSL/TLS
e poiPanoramica
attivare l’opzione modalitàCompleto (Strict)
Nel menu
SSL/TLS
e poiServer di origine
è possibile generare il certificato cliccando suCrea certificato
. Le opzioni di default dovrebbe già essere quelle corrette, quindi cliccare sul pulsanteCrea
in basso.Copiare e salvare in un file dal nome che scegli tu (consiglio nome-dominio.key) la chiave privata
Copiare e salvare in un file dal nome che scegli tu (consiglio nome-dominio.pem) il certificato generato
Salvare i file in una cartella accessibile dal container docker di Traefik
Configurazione Traefik
- 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
,ro
alla 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
- 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"
- 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