Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

di Luigi Duchi

04 Maggio 2018

Home Assistant

Luigi Duchi

Benvenuti amici, oggi parleremo di come firmare tramite SSL il vostro DDNS. Di cosa sto parlando?

Navigando su internet vi sarete imbattuti sicuramente in siti che mostravano l'inizio dell'indirizzo con una sigla https e in altri che invece riportavano semplicemente http. Cosa sono e in cosa si differenziano questi due protocolli?

Nel protocollo http (HyperText Transfer Protocol) tutte le comunicazioni avvengono “in chiaro” senza alcun genere di sicurezza e si basano sul protocollo TCP/IP 

Il protocollo https (HyperText Transfer Protocol over SSL) impiega, oltre al protocollo TCP/IP, il livello SSL - Secure Sockets Layer - che si occupa della crittografia e dell'autenticazione dei dati trasmessi.

HTTP si appoggia generalmente sulla porta 80 mentre HTTPS sulla porta 443.

Quindi con questa firma renderemo piu sicuro il nostro DDNS, vediamo come fare:

prenotate l'indirizzo ip del vostro raspberry sul vostro router (di solito questa impostazione la trovate nella sezione server DHCP alla voce ip resenvation) o impostatelo manualmente in modo che sia sempre il solito anche in mancanza di corrente e successivo ripristino.

La prima operazione da fare sarà creare un ddns e consiglio di crearlo con Duckdns, potrete raggiungere il sito qui.

Loggatevi, con la modalità che preferite, e una volta entrati, create un dominio con la parola che più preferite 

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

Una volta creato andate nelle impostazioni del vostro router, nelle impostazioni di inoltro porte (Port Forwarding) andrete ad inoltrare la porta 8123 sia in uscita che in entrata verso l'indirizzo IP del vostro raspberry. Salvate le modifiche e uscite dalle impostazioni del vostro router.

recatevi nel file configuration.yaml sul vostro raspberry e andrete ad aggiungere la seguente stringa:

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

dove dopo domain: inserirete il dominio che avete creato su duckdns senza altre voci o suffissi nel mio caso raspberrygigi

mentre dopo token: inserirete il token che potrete reperire nella pagina principale di duckdns una volta effettuato il login

salvate e riavviate il raspberry.

Torniamo adesso sulla pagina di duckdns faremo il login e dalla pagina principale cliccheremo su install in alto

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

e successivamente selezioneremo pi e in basso scegliamo, nel menu a tendina, il dominio che abbiamo creato

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

nella pagina che vi si aprirà ci sarà la procedura per installare sul nostro raspberry la procedura per ssl, tenetela aperta e proseguite cosi:

sul terminale del nostro raspberry creiamo la directory duckdns digitando il comando:

mkdir duckdns

dopo andiamo all'interno della directory duckdns con il comando:

cd duckdns

e digitiamo il comando:

sudo nano duck.sh 

nel file che vi andrà a creare andrete a copiare questa stringa che troverete nella pagina che precedentemente avrete lasciato aperto in duckdns:

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

ovviamente nella parte censurata dovrete inserire il vostro token che potrete reperire nella pagina principale di duckdns, mentre dove è scritto exampledomain andrà inserito il vostro dominio duckdns. Inoltre alla fine della stringa eventualmente modificate la directory dove avete creato la cartella duckdns (es. nel mio caso /home/pi/duckdns/duck.log invece che ~/duckdns/duck.log)

salvate il documento e uscite (ctrl+x>y>invio)

tornate nel terminale assicuratevi di essere sempre dentro la directory duckdns, in caso contrario ridigitate il comando cd duckdns

digitate il comando:

sudo chmod 700 duck.sh

e subito dopo digitate il comando:

crontab -e

vi chiederà con che editor vorrete aprire il file scegliete il numero corrispondente a nano

nel file che si aprirà dovrete scorrere in fondo e dopo l'ultima riga copiate dalla solita pagina aperta di duckdns la seguente stringa:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

salvate il documento e uscite (ctrl+x>y>invio)

digitate il comando per testare lo script:

sudo ./duck.sh

dopo digitate il comando:

cat duck.log 

se tutto e' andato a buon fine vedrete comparire un ok in caso contrario un ko, ricontrollate nel caso token e dominio nello script duck.sh

infine scrivete il comando:

sudo service cron start

bene riavviate il vostro raspberry, al riavvio vedrete che potrete collegarvi al vostro home assistant con il vostro ddns ovvero digitando sul vostro browser per esempio:

http://vostrodominio.duckdns.org:8123

ciò vi consentirà di connettervi al vostro Home Assistant anche quando sarete fuori casa.

Vediamo adesso come aumentare la sicurezza aggiungendo la firma SSL al nostro DDNS appena creato:

per prima cosa andiamo nelle impostazioni del nostro router sempre alla voce inoltro porte andando a chiudere la porta 8123 sull'indirizzo ip del raspberry (quella che avevamo aperto precedentemente)

andiamo invece ad aprire la porta 80 sia sulla porta interna che su quella esterna sempre sul nostro ip del raspberry, la stessa cosa la faremo con la porta 443. Salviamo le impostazioni del nostro router e rechiamoci sul terminale del raspberry.

digitate il comando:

git clone https://github.com/letsencrypt/letsencrypt

poi andiamo nella directory letsencrypt con il comando:

cd letsencrypt

e poi digitiamo la stringa:

sudo ./letsencrypt-auto certonly --email VOSTRAMAIL -d VOSTRODDNS

ad esempio:

sudo ./letsencrypt-auto certonly --email mariorossi@gmail.com -d mariorossi.duckdns.org

aspettate che finisca tutta la procedura e quando vi verrà chiesto di scegliere scegliete il numero che corrisponde a:

Automatically use a temporary webserver (standalone)

Accettate quando vi verrà chiesto di farlo.

quando avra' finito di elaborare andate a scrivere il comando:

sudo chmod -R 777 /etc/letsencrypt

tornate ora nelle impostazioni del router, ancora una volta nelle impostazioni di inoltro porte, cancellate l'inoltro della 80 e della 443 che avete effettuato prima e al suo posto metterete la 443 su porta esterna e la 8123 su porta interna, sempre sull'indirizzo ip del vostro raspberry.

salvate le nuove impostazioni.

recatevi ora sul file configuration.yaml sotto la voce http: andrete a scrivere la seguente stringa.

Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt(aggiornato con sensore e notifica telegram)

salvate il file e poi tornate sul terminale e lanciate il comando per riavviare il vostro raspberry:

sudo reboot

al riavvio andate sul browser e se tutto è andato bene, potrete accedere al vostro Home Assistant tramite https ad esempio:

https://vostrodominio.duckdns.org 

Non sarà necessario inserire nessuna porta.

E' importante sottolineare che il certificato avrà una durata di 90 giorni al termine dei quali (ma si potrà gia dieci giorni prima della scadenza) si dovrà rinnovare, vediamo come:

Rinnovo certificato ssl:

Innanzitutto voglio assolutamente ringraziare Francesco Bernardi(@Budmc) un utente del nostro blog che mi ha aiutato con un problema del rinnovo dei certificati,oltre a convincermi a non lanciare il Raspberry dalla finestra ;-)  

il certificato potrete rinnovarlo quando volete in maniera manuale, tramite questa procedura:

- Andate nelle impostazioni del vostro router e aprite la porta 80 sia interna che esterna sull'indirizzo ip del vostro raspberry

- aprite il terminale sul vostro raspberry

- se avete in esecuzione il servizio apache2 fermatelo con il seguente comando:

sudo service apache2 stop

Questo comando sarà necessario in quanto e avrete questo servizio attivo andrà ad occupare la porta 80 di fatto impedendo il rinnovo del certificato

una volta fermato il servizio (se vi dovesse dare un messaggio di errore probabilmente non avrete apache2 installato ignorate l'errore e andate avanti con la guida.)

- digitate e premete invio il comando:

cd letsencrypt

andrete così nella directory letsencrypt

dopodichè digitate:

sudo ./letsencrypt-auto certonly --email VOSTRAMAIL -d VOSTRODDNS

ad esempio:

sudo ./letsencrypt-auto certonly --email mariorossi@gmail.com -d mariorossi.duckdns.org

e premete invio 

- Quando ve lo chiederà  

selezionate il numero relativo a 

Spin up a temporary webserver (standalone)

e premete invio

- selezionate il numero relativo e premete invio per

Renew & replace the cert (limit ~5 per 7 days)

attendete e una volta ricevuta conferma di avvenuto rinnovo riavviate il vostro raspberry con il comando:

sudo reboot

al riavvio potrete tornare nelle impostazioni del vostro router e chiudere la porta 80.

###########################Aggiornamento##########################

per meglio monitorare i giorni che mancano alla scadenza potrete creare un sensore nel file sensor.yaml:

 

- platform: command_line
  name: Scadenza SSL
  unit_of_measurement: days
  scan_interval: 10800
  command: "ssl-cert-check -b -c /etc/letsencrypt/live/ILVOSTRODDNS.duckdns.org/cert.pem | awk '{ print $NF }'"

se il sensore non dovesse segnare i giorni aprite il terminale del raspberry e scrivete questo comando:

sudo apt-get install ssl-cert-check premete invio e dovreste vedere i giorni mancanti.

 Successivamente potrete creare un automazione in automation.yaml per farvi notificare superata una certa soglia impostabile cambiando il numero dopo below:

- alias: ssl in scadenza
  hide_entity: True
  trigger:
    platform: numeric_state
    entity_id: sensor.scadenza_ssl
    below: 20
  action:
    service: notify.telegram
    data:

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Luigi Duchi

Luigi Duchi

Nato a Grosseto il 24 Dicembre 1982 perito elettrotecnico che lavora nel mondo della domotica e installazione di impianti elettrici, impianti di allarmi, videosorveglianza e automazioni in genere. Appassionato da sempre di tecnologia e aperto alla conoscenza di nuove soluzioni.

Disqus loading...