Installare un certificato Let's Encrypt ai server qmail e dovecot

21 marzo 2018 Roberto Puzzanghera0 commenti

Maggiori informazioni qui:

Qui di seguito viene spiegato come installare e configurare un certificato SSL valido di Let's Encrypt per i server qmaildovecot. L'installazione è ad opera del client certbot.

Certbot is part of EFF’s effort to encrypt the entire Internet. Secure communication over the Web relies on HTTPS, which requires the use of a digital certificate that lets browsers verify the identity of web servers (e.g., is that really google.com?). Web servers obtain their certificates from trusted third parties called certificate authorities (CAs). Certbot is an easy-to-use client that fetches a certificate from Let’s Encrypt—an open certificate authority launched by the EFF, Mozilla, and others—and deploys it to a web server.

Installazione di certbot

Innanzitutto è necessaria una versione di python >= 2.7, e poi vi sono una marea di prerequisiti, perciò è consigliabile lasciar fare l'installazione al package manager della propria distribuzione. Per gli utenti Slackware c'è uno sclackbuild pronto su SBO qui e se non si ha voglia di risolvere manualmente tutte le dipendenze si può sempre usare sbotools.

Installazione del certificato

Naturalmente il certificato viene rilasciato dopo che si è data prova delle affettiva proprietà dei domini associati al certificato. Pertanto certbot dovrà installare una ACME challenge in una directory a nostra scelta dove far girare un webserver temporaneo e recuperare l'ACME via http. Se tutto va a buon fine il certificato verrà installato in /etc/letsencrypt.

Creiamo quindi la cartella dove "webroot" la ACME challenge dovrà essere salvata:

mkdir -p /path/to/webroot

Creare un virtual host apposito su apache:

<VirtualHost *:80>
 ServerName smtp.yourdomain.tld
 ServerAlias imap.yourdomain.tld
 ServerAlias pop3.yourdomain.tld

DocumentRoot /path/to/webroot
 <Directory /path/to/webroot>
   Require all granted
 </Directory>
</VirtualHost>

Poi prepariamo uno script per installare i certificati via certbot in /usr/local/bin/my-cert.sh

#!/bin/sh
#

CERTBOT=/usr/bin/certbot
DOMAIN=smtp.yourdomain.tld

$CERTBOT certonly \
 --webroot \
 --webroot-path /path/to/webroot \
 --preferred-challenges http-01 \
 -d smtp.${DOMAIN} -d imap.${DOMAIN} -d pop3.${DOMAIN} \
 --email youremail@${DOMAIN} \
 --renew-by-default \
 --agree-tos \
 --text

# qmail cert
if [ ! -d "/var/qmail/control/certs_backup" ]; then
 mkdir -p /var/qmail/control/certs_backup
fi
cp -p /var/qmail/control/*.pem /var/qmail/control/certs_backup/
cat /etc/letsencrypt/live/smtp.${DOMAIN}/privkey.pem /etc/letsencrypt/live/smtp.${DOMAIN}/fullchain.pem > /var/qmail/control/servercert.pem
/usr/local/bin/qmailctl restart

# dovecot cert (you have to set the path inside 10-ssl.conf accordingly)
/usr/local/bin/dovecotctl restart

Il primo dominio della lista sarà usato come nome del certificato stesso. Per conoscere meglio cosa può fare certbot si può digitare:

certbot --help all

Ricordiamoci infine di settare la x flag:

chmod +x /usr/local/bin/my-cert.sh

Possiamo quindi eseguire lo script e se non vi saranno errori avremo ottenuto il nostro certificato.

Infine settiamo un cronjob per rinnovare il certificato una volta al mese (la validità è di 3 mesi):

15 2 20 * * /usr/local/bin/my_certbot.sh >> /var/log/cron

Configurazione di qmail e dovecot

Per quanto riguarda qmail la private key e la fullchain devono essere unite in un unico file /var/qmail/control/servercert.pem. Questo viene fatto dallo script di cui sopra e non deve essere fatto altro.

Riguardo a dovecot invece, è sufficiente modificare il file di configurazione /usr/local/dovecot/etc/dovecot/conf.d/10-ssl.conf come segue:

#ssl_cert = </etc/ssl/certs/dovecot.pem
#ssl_key = </etc/ssl/private/dovecot.pem
ssl_cert = </etc/letsencrypt/live/smtp.yourdomain.tld/fullchain.pem
ssl_key = </etc/letsencrypt/live/smtp.yourdomain.tld/privkey.pem

Aggiungi un commento