Installare un certificato di sicurezza ssl gratuito ottenuto da letsencrypt su Postifix e Dovecot

scs ingegneria dei sistemi lets's encrypt letsencrypt

Ho avuto la necessità di installare un certificato ssl per garantire una comunicazione sicura con il mio server di email.

Dato che offro caselle di email ai miei clienti, devo garantire un servizio adeguato, sia per le funzionalità che per la sicurezza, e un certificato per imap e per l’smtp è praticamente obbligatorio.

Avevo due opzioni, la prima era acquistare un certificato presso una CA ufficiale, e la seconda crearmi una CA personale, e di conseguenza crearmi i miei certificati.

Entrambe le soluzioni non mi piacevano; la prima ha un costo, e, aimè, dato che non sono esperto di certificati, chiavi ssl e altro, avevo pure paura di sbagliare ad acquistare il certificato!

La seconda soluzione non era percorribile perché, dato che devo dare un servizio a pagamento, mi spiace creare certificati che non sono ufficialmente riconosciuti dai client, e che quindi accendono allarmi e warning che spaventano l’utente generico.

Per cui, girottolando sulla rete, ho trovato letsencrypt.org, una organizzazione riconosciuta che rilascia certificati ufficiali in modo gratuito.

Questi certificati non sono adatti per firmare documenti o altro, ma vanno benissimo per cifrare una connessione verso un server o per scaricare e inviare mail.

Qua descrivo i passi tecnici per creare e installare questi certificati su postfix e dovecot. Tenete presente che qualcosa (…dalla data di scrittura del documento a oggi) puo’ essere cambiato, per un aggiornamento della release del software di letsencrypt, ma i principi di base e i passi sono gli stessi.

scs ingegneria dei sistemi ssl

Primo passo: installazione del software.

Per ricevere i certificati è necessario installare un software che effettua una verifica e che genera il certificato.

Il software crea o utilizza un sito web sul server destinatario del certificato, e dall’esterno apre una comunicazione che effettivamente verifica quella macchina risponde al certificato per il sito web che tu vuoi effettivamente generare.

Mi spiego meglio con un esempio.

Voglio generare un certificato per il mio sito, mailserver1.esseciesse.net

Il software che vado ad installare, al momento della richiesta del certificato crea un sito web temporaneo sul mio server (mailserver1.esseciesse.net), pone un file cifrato su questo sito e attende. Dall’esterno, dal sito di letsencrypt, parte una verifica automatica verso il sito https://mailserver1.esseciesse.net, per verificare che effettivamente sul sito che ha richiesto il certificato, esista, abbia effettuato la richiesta, sia presente un server web, e che questo contenga un file particolare con un contenuto particolare. Questo certifica che il richiedente è anche il proprietario del sito.

Per cui i passi sono i seguenti ( su macchina Linux UBUNTU 14.X):

Scaricare dal sito il software e installarlo

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

cd letsencrypt

 

A questo punto bisogna generare il certificato.

Spegnere il web server presente sul tuo sistema, e assicurarsi che sia raggiungibile dall’esterno sulla porta https (443), sull’indirizzo web su cui vuoi generare il certificato.

Io ho dato il seguente comando, ma chiaramente deve essere personalizzato secondo le vostre esigenze

./letsencrypt-auto certonly --test-cert -v -t -d mailserver1.esseciesse.net --standalone -m a.montanari1@esseciesse.net --agree-tos

 

Questo crea un certificato di test (opzione --test-cert) che vi serve per verificare che sia tutto a posto.

Ricorda che attualmente possono essere richiesti 5 certificati in 7 giorni, per cui attenzione a non lanciare troppi comandi senza l’opzione di test….

Quando lanci il comando con l’opzione di test, questo genera un certificato valido, ma non firmato da una CA autorizzata, ma generato da una CA “fake”.. per cui attenzione a non usarlo.

 

Quando tutto e’ a posto, e il comando di test non da problemi, il comando da lanciare, la prima volta e quindi una volta al mese, (quello buono per intenderci) è il seguente:

./letsencrypt-auto certonly -t -d mailserver1.esseciesse.net --standalone -m a.montanari1@esseciesse.net --agree-tos --renew-by-default

Il certificato generato dura solo 3 mesi, per cui è opportuno rinfrescarlo spesso. Io ho settato il mio cron per essere invocato una volta al mese con quel comando.

Lanciare poi il comando per far sì che dovecot e la mail possano accedere ai certificati. Assicurarsi che dovecot e postfix appartengano al gruppo mail.

chgrp mail /etc/letsencrypt/archive /etc/letsencrypt/live

chmod g+rx /etc/letsencrypt/archive /etc/letsencrypt/live

 

Ricorda il restart di apache

 

Con queste operazioni hai generato un certificato valido per postfix e dovecot.

Adesso vediamo la configurazione dei due servizi.

Dovecot

File 10-auth.conf

disable_plaintext_auth = yes

File 10-ssl.conf

ssl = yes

ssl_cert = </etc/letsencrypt/live/mailserver1.esseciesse.net/fullchain.pem

ssl_key = </etc/letsencrypt/live/mailserver1.esseciesse.net/privkey.pem

 

Postfix, in master.cf main.cf

smtpd_tls_cert_file = /etc/letsencrypt/live/mailserver1.esseciesse.net/cert.pem

smtpd_tls_key_file = /etc/letsencrypt/live/mailserver1.esseciesse.net/privkey.pem

smtpd_tls_CAfile = /etc/letsencrypt/live/mailserver1.esseciesse.net/chain.pem

Per vedere altre configurazioni relative alla ottimizzazione del protocollo vedi per postfix

installazione di un imap server con postfix e dovecot

 

Per verificare il certificato dare il seguente comando

openssl s_client -connect mailserver1.esseciesse.net:993

CONNECTED(00000003)

depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1

.......

---

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.

A1 LOGOUT

Closed

 

 

Per verificare la CA dare il seguente comando

openssl s_client -CApath /etc/letsencrypt/live/mailserver1.esseciesse.net -connect mailserver1.esseciesse.net:993

CONNECTED(00000003)

……..

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.

A1 LOGOUT

Closed

 

TAGS: cerfificato, ssl, gratuito, dovecot, postfix, letsencrypt

© 2018 SCS di Alberto Montanari & C. s.a.s. | Pricacy Policy - Cookie Policy