giovedì 2 marzo 2017

Ottenere gratuitamente un certificato SSL per pfSense

Da settembre 2015 è operativo il progetto Let's Encrypt, una certification authority il cui scopo è quello di diffondere e favorie la crittografia delle comunicazioni su web.
Per raggiungere questo scopo ha azzerato il costo per l'emissione dei certificati SSL e sviluppato un protocollo che consenta di automatizzare una procedura abbastanza complessa di emissione e verifica di un certificato. Ad oggi sono stati emessi 30 milioni di certificati.
Let's Encrypt è un organizzazione senza scopi di lucro a sponsorizzare il progetto troviamo grandi aziende del calibro di OVH, Facebook, Akamai, Cisco, Mozilla, Linux Foundation ecc...


I certificati rilasciati da Let's Encrypt sono esclusivamente di tipo Domain Validation (DV), al momento non sono previsti certificati di tipo Organization Validation (OV) ed Extended Validation (EV). Anche i certificati Wildcard non sono previsti data la facilità con cui può essere emesso un certificato


Altra caratteristica di questo tipo di certificati è la validità temporale limitata a 90 giorni. La motivazione è legata alla garanzia di una maggiore sicurezza ed al fatto che è il client che si preoccupa di avviare la procedura di riemissione automatica del certificato prima della scadenza.

Let's Encrypt permette l'emissione di certificati contenenti nomi alternativi denominati anche Subject Alternative Name (SAN).

Nel progetto di Let's Encrypt il client riveste un ruolo molto importante poichè diventa l'agente che si preoccupa di gestire in modo automatico tutta la procedura di richiesta, verifica ed installazione del certificato.
Per poter riuscire in quest'intento ambizioso, è stato sviluppato un protocollo specifico. Il protocollo si chiama Automated Certificate Management Environment (ACME) che è stato sottoposto all'IETF per la standardizzazione.

Ad oggi esistono un numero enorme di client che implementano il protocollo ACME rendendo disponibile il servizio per qualsiasi sistema. Qui è possibile reperire un elenco ufficiale.

Dopo una doverosa introduzione, vediamo operativamente come generare certificati SSL validi per il nostro pfSense.

Tra i packages di pfSense è disponibile da qualche tempo ACME che implementa l'omonimo protocollo per l'emissione e la validazione del certificato.
Per prima cosa occorre installare il package

Andiamo in System > Package Manager > Available Packages e clicchiamo su Install in corrispondenza del pacchetto ACME

In System > General Setup impostiamo l'hostname da dare al nostro pfSense ed il dominio.

Attenzione!
Il FQDN attribuito alla nostra macchina deve essere correttamente registrato nel DNS del nostro dominio.

Ora selezioniamo  Services > Acme Certificates > Account keys

Clicchiamo su Add per aggiungere un nuovo Account keys, inseriamo un nome per il nostro account, selezioniamo Let's Encrypt Production e successivamente clicchiamo su Create new account key per creare la chiave e poi su Register acme account key. Molto importante non dimenticare di cliccare su Save al termine della procedura.

 

Ora selezioniamo Services > Acme Certificates > Certificates

Clicchiamo ancora su Add

Come nome inseriamo il FQDN del nostro certificato, in Acme Account scegliamo l'account creato al passo precedente. Come Key Size possiamo scegliere le dimensioni e quindi la sicurezza della nostra chiave. 
In Domain SAN list inseriamo gli FQDN da inserire nel certificato ed il metodo che il client utilizzerà per la verifica.
Esistono diverse modalità per la validazione del dominio, ora vedremo quella basata su DNS, pertanto scegliamo DNS-manual.
Se vogliamo creare un certificato SAN possiamo aggiungere tutte le estensioni in questo riquadro.

 

In DNS-Sleep possiamo introdurre un valore in secondi, che il client attenderà prima di effettuare la query al DNS per verificare la validità del nome a dominio.

In Action List è possibile indicare script da eseguire dopo il rinnovo del certificato. Questo serve per quei casi in cui è richiesto il riavvio del webserver per la corretta installazione del nuovo certificato.

Il campo Certificate Renewal After serve per programmare i rinnovi automatici del certificato. A tale scopo ricordo che i certificati Let's Encrypt hanno durata di 90 giorni e di default vengono rinnovati ogni 60.

Clicchiamo su Salva


Ora in Services > Acme Certificates > Certificates apparirà una lista come la seguente

 

Clicchiamo sul pulsante Issue ed attendiamo l'esito della procedura a video. 

 

Tra i messaggi troveremo una richiesta molto importante. A questo punto occorre creare nel DNS del nostro dominio un record TXT con dominio _acme-challenge.nostro_FQDN e con valore quello riportato dalla procedura.
Se ne avete la possibilità vi consiglio di creare la chiave con TTL pari a 600 in modo che la validità del record sia bassa.


Attenzione!
Dopo aver creato questa voce non cliccare per nessun motivo su Issue altrimenti la procedura genererà una nuova chiave da pubblicare nel DNS costringendoci ad attendere inutilmente il tempo di aggiornamento e propagazione.

Ora possiamo cliccare su Renew ed avviare la procedura di verifica bastata sul FQDN del nostro dominio ed il record DNS appena creato.
Al termine della verifica verrà emesso il certificato che ritroveremo direttamente in System > Cert. Manager > Certificates


Mentre sotto System > Cert. Manager > CA troveremo il certificato della CA di Let's Encrypt

 

In alcuni casi l'instalazione automatica potrebbe fallire. Se dovesse verificarsi quest'ipotesi, occorre installare manualmente i certificati che sono reperibili nella cartella /tmp/acme/nostro_fqdn/nostro_fqdn


Come ultimo passaggio non ci resta che portarci in Services > Acme Certificates > General Settings e spuntare l'opzione per permettere il rinnovo automatico del certificato.

A questo punto il certificato è attivo e non ci resta altro che utilizzarlo selezionandolo in System > Advanced > Admin Access > SSL Certificate
Posta un commento