Aggiungere un certificato Wildcard autoaggiornante al NAS Synology

 


In questa guida cerco di spiegare passo-passo (non proprio per principianti, ma in maniera molto semplice) come poter come poter creare un certificato wildcard personalizzato (quindi NON un “synology.me”) su NAS Synology. Come sempre cercherò di scrivere un articolo come piace a me: inserirò le informazioni necessarie senza dilungarmi troppo, senza continue ripetizioni (in stile SEO) e andando al punto, ma inserendo le informazioni che è necessario sapere (per capire cosa si sta facendo).

Come prima cosa, naturalmente, dovete avere un NAS Synology e un dominio registrato presso un register (ad esempio “pippopluto.io”). Va bene anche un dominio DuckDns.


1.    Configurazione tipo (HW/SW)

Nel mio caso mi trovo nella seguente situazione (cioè, se avete la mia stessa configurazione e seguite la guida, vi garantisco che funziona):

  • Synology DS-1522+
  • DSM 7.2.2 Update3

 

2.    Prerequisiti

Come detto dovete naturalmente avere:

  • NAS Synology
  • DSM 7.x
  • Dominio registrato (es. “pippoluto.io”) e DNS gestito presso uno dei gestori supportati

 

3.    Breve introduzione/spiegazione

Per chi non lo sapesse, i certificati wildcard permettono di gestire tutti i sottodomini, con la stessa radice, tramite un unico certificato comune, invece di dover creare un singolo certificato univoco per ogni sottodominio. Ad esempio si può creare un certificato per “*.pippopluto.io” e usarlo per i sottodomini “paperino.pippopluto.io”, “www.pippopluto.io”, “quellochevuoi.pippopluto.io”, ecc.

I vantaggi sono numerosi, ma i principali sono:

  • Velocità di creazione di un sottodominio: non bisogna più passare per la procedura di generazione del certificato da parte della CA (Let’s encrypt o chi per esso), ogni volta che dobbiamo creare un nuovo sottodominio
  • Un solo certificato da rinnovare ogni 3 mesi, invece che decine!

Se, come me, usate molto i container docker e avete un sottodominio per ognuno di essi, probabilmente sfrutterete la comodità del Reverse Proxy (NGINX) integrato in Synology. Ma vi sarete anche resi conto di quanto sia scomodo il vincolo imposto da Synology che non accetta la creazione di certificati wildcard diversi dal DDNS Synology (synology.me).

In questa guida vi spiegherò come fare per poter aggirare questo vincolo.

NOTA:
per riuscire a fare quanto appena detto, mi sono basato su varie guide (alcune anche abbastanza vecchie) trovate in rete, oltre a post su Reddit (anche sul blog di Home Assistant) e alla documentazione ufficiale. Le difficoltà principali che ho incontrato sono dovute al fatto che nessuna delle guide da me lette è completa al 100%. Tutte quante “si dimenticano” dei pezzi, o sono incomplete, o ancora sono troppo specifiche. Quello che trovate qui è un “estratto” di quello che ho fatto io per riuscire ad ottenere il risultato deidrato (e soprattutto IN ITALIANO).
Le guide principali a cui potete fare riferimento anche voi, se volete, sono:

 

 

ATTENZIONE!!!!

Questa guida richiede l’accesso al NAS tramite SSH. Se non avete accesso SSH, dovete prima abilitarlo ed essere sicuri di riuscire ad accedere alla console.
Dovete anche essere in grado di accedere con un utente con permessi amministrativi.

 

4.    Verifica dei requisiti

Come prima cosa, come dicevo poco sopra, dovete essere in possesso di un dominio (non necessariamente a pagamento). Tale dominio deve essere gestito da uno dei provider supportati in questo elenco: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

Se il vostro gestore non è in elenco, è meglio se cercate un altro metodo perché bisogna essere molto skillati per riuscire a farlo funzionare tramite alias o tramite custom API.

 

5.    Creazione di un utente amministrativo

Questo step è opzionale. Se volete potete creare un utente (con permessi di admin) apposito per la gestione dei certificati.

Come detto questo step non è obbligatorio, se volete potete passare subito al successivo e usare direttamente il vostro utente admin.

Per prima cosa dobbiamo andare in “Control Panel”

 


Quindi su “User & Group”

 


Poi clicchiamo sul bottone “Create” e dal menu a tendina scegliamo “Create user”

 



Nella finestra che si apre inseriamo il nome dell’utente che vogliamo creare (ad esempio “certuser”) e inseriamo una password. Poi clicchiamo sul bottone “Next”.

 


Ora spuntiamo la casella relativa al gruppo “administrators” e poi clicchiamo sul bottone “Next”

 


Diamo gli accessi che vogliamo all’utente (di default può accedere a tutto, essendo nel gruppo degli amministratori). L’importante è che abbia accesso alla “homes”. Poi clicchiamo su “Next”

 


Di nuovo “Next”

 


E ancora “Next”

 


Sempre “Next”

 


E infine “Done”

 


A questo punto l’utente è stato creato

 


Consiglio: fate un accesso con l’utente appena creato e abilitate la 2FA (two-factor authentication), perché vi darà meno problemi alla fine in fase di creazione del certificato.

Possiamo passare al prossimo punto.

 

6.    Installare acme.sh

Il primo passo reale della procedura di generazione di un certificato wildcard è l’installazione di acme.sh, uno script che permette di gestire la creazione ed il rinnovo di certificati direttamente da shell. Qui potete trovare tutti i dettagli: https://github.com/acmesh-official/acme.sh

Dobbiamo quindi collegarci tramite SSH al NAS Synology. Io di solito uso PuTTY (https://www.putty.org/), che considero il più comodo tool per effettuare queste operazioni.

Lanciamo il collegamento SSH al NAS

 


Inseriamo l’utente (amministratore) e poi la password relativa

 


Vi troverete davanti ad una situazione del genere

 


Ora diamo il seguente comando (se volete fare il copia-incolla, in PuTTY potete incollare tenendo premuto il tasto CTRL mentre cliccate con il tasto destro del mouse):

sudo su -

Vi verrà chiesta la password. Inseritela

 


Ora diamo questo comando per scaricare acme.sh:

wget
https://github.com/acmesh-official/acme.sh/archive/master.tar.gz

 


Ora inseriamo il comando per scompattare l’archivio appena scaricato:

tar xvf
master.tar.gz

E poi il commando per navigare nella directory appena estratta:

cd acme.sh-master/

 

Ora diamo il comando per installare effettivamente acme.sh. Naturalmente dovete sostituire “paperino@pippopluto.io” con il vostro indirizzo email:

./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail paperino@pippopluto.io

 

Bene, lo script acme.sh è installato. Possiamo chiudere la connessione SSH (ci servirà di nuovo più tardi, ma per poter utilizzare acme.sh è comunque necessario disconnettersi e riconnettersi). E passare al prossimo punto.

 

7.    Abilitazione delle API presso il gestore del DNS

Da qui in avanti vi farò vedere come generare il token per Cloudflare (il gestore che uso io), ma la procedura può essere fatta per qualunque altro gestore supportato. Dovete solo cercare come farlo.

Come dicevo appena sopra, queste istruzioni sono specifiche per Cloudflare, il concetto è che dobbiamo ottenere un token o una chiave per la gestione dei DNS, da passare a acme.sh.
Cloudflare ha 2 opzioni: le API Key (più potenti) e gli API Token. Visto quello hce deve fare lo script, preferisco generare un Token, che dà meno “poteri” ed è più gestibile.

Apriamo la pagina Cloudflare per la creazione degli API Token (https://dash.cloudflare.com/profile/api-tokens) e clicchiamo sul tasto “Create Token”

 



Selezioniamo il template “Edit zone DNS”

 


Non so se serve, ma per sicurezza gli ho dato anche il permesso di lettura (anche se credo dovrebbe già essere incluso nell’Edit). Clicchiamo su “+ Add more”

 


E inseriamo i dati per la lettura

 


Ora, nella sezione “Zone Resources”, selezioniamo il dominio che vogliamo gestire (ad esempio “pippopluto.io”

 


Il resto lo lasciamo così e clicchiamo su “Continue to summary”

 


Viene mostrato il riepilogo. Clicchiamo su “Create Token”

 


Copiamoci il token appena creato, che ci servirà tra poco

 


 

8.    Registrazioni delle variabili d’ambiente

Apriamo nuovamente la shell SSH e diamo i seguenti comandi per riportarci nella posizione precedente

sudo su -
cd acme.sh-master/

 

Ora registriamo le variabili d’ambiente relative a Cloudflare. Se usate un altro gestore, verificate a questa pagina quali sono le variabili da utilizzare: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

Nel caso di Cloudflare usate questi comandi sostituendo a “MY_CLOUDFLARE_TOKEN” il token che avete copiato precedentemente e a “paperino@pippopluto.io” la vostra mail di registrazione a Cloudflare

export CF_Token=MY_CLOUDFLARE_TOKEN
export CF_Email=paperino@pippopluto.io

I comandi sopra riportati sono “silenti”, cioè se sono giusti non vedete nulla dopo aver fatto “invio”. Però vengono registrati correttamente.

 


Ora diamo i seguenti comandi per registrare le altre informazioni relative all’account Synology. Questi comandi sono uguali per tutti, NON sono specifici di Cloudflare.
Al posto di “certuser” dovete inserire il nome vostro utente amministratore di Synology.
Al posto di “MY_PASSWORD” la password di tale utente.
Al posto di “Certificato Wildcard” la descrizione che volete dare al certificato.

export SYNO_Username=certuser
export SYNO_Password=MY_PASSWORD
export SYNO_Certificate=”Certificato Wildcard”
export SYNO_CERTIFICATE="Let's Encrypt"
export SYNO_Create=1

 


Bene, ora è tutto pronto per passare alla generazione del certificato

 

9.    Generare il certificato

Ora diamo il seguente comando per generare e scarica il certificato. Sostituite “pippopluto.io” e “*.pippopluto.io” con il vostro dominio e “dns_cf” con il vostro gestore dei DNS (se diverso da Cloudflare):

acme.sh –server letsencrypt –issue -d pippopluto.io -d “*.pippopluto.io” –dns dns_cf –home

 


 Attendete che finisca (ci metterà 1 o 2 minuti).

 


Ci siamo quasi! Non rimane che dare il comando per dire al DSM di iniziare a usare il certificato appena creato. Per farlo diamo il seguente comando, sempre sostituendo “pippopluto.io” con il vostro dominio:

acme.sh --deploy -d pippopluto.io -d “*.pippopluto.io” –deploy-hook synology_dsm –home

Se avete abilitato la 2FA per l’utente, vi chiederà il codice OTP. Inseritelo e la procedura si concluderà con successo.

 


Ora possiamo verificare che il certificato sia installato e attivo.

Torniamo sull’interfaccia web del NAS e andiamo su “Control Panel”

 


Clicchiamo su “Security”

 


Andiamo sulla linguetta “Certificate”

 


Il nuovo certificato sarà il default (il primo in alto). Apriamo i dettagli con la freccia apposita

 


E vediamo che avremo il nostro certificato wildcard

 


 Ora non rimane che impostare il rinnovo automatico

 

10.                      Impostare il rinnovo

Per effettuare il rinnovo del certificato è necessario lanciare un comando di acme.sh, ma non è necessario fare ogni volta la procedura di accesso SSH. Infatti possiamo farlo schedulando un task che esegua il comando con una ricorrenza fissa.

Per farlo apriamo di nuovo il “Control Panel”

 


Selezioniamo “Task Scheduler”

 


Scegliamo dal menu “Create Task” -> “Scheduled Task” -> “User-defined script”

 


Nella finestra che si apre impostiamo un nome per il task e selezioniamo l’utente amministratore con cui abbiamo registrato il certificato

 


Nel tab “Schedule” impostiamo la ricorrenza con cui eseguire il comando di rinnovo (ad esempio io ho messo ogni primo lunedì del mese alle 6 di mattina)

 


In “Task Settings” spuntiamo la casella per essere avvisati via mail ad ogni esecuzione dello script e come script mettiamo il seguente comando (nturalmente sostituendo “pippopluto.io” con il vostro dominio):

/usr/local/share/acme.sh/acme.sh --renew -d pippopluto.io -d "*.pippopluto.io" --home /usr/local/share/acme.sh --server letsencrypt

Poi clicchiamo su “OK” per salvare il task

 


 

Fine. Ora possiamo aggiungere tutti i sottodomini che vogliamo nel reverse proxy, usando questo certificato


Commenti

Post popolari in questo blog

Creare un sensore weather (previsioni del tempo) da Meteo & Radar in Home Assistant

Home Assistant - Recuperare informazioni aggiuntive da Netatmo (termostato)

Installare Frigate su Raspberry Pi con HAssOS

Creare un sensore del prezzo del gas (PSBIL_BUY) in Home Assistant

Installare Portainer su NAS Synology

Esporre UPS da NAS Synology verso Home Assistant (NUT)

Tasmota (via OTA) su BlitzWolf BW-SHP10 (e su Tuya ESP in generale)

Creare MQTT Server (broker) in Home Assistant (HASSIO)

Ricevere la posizione GPS quando si parcheggia l'automobile (con Home Assistant)