Sécurisez votre serveur email Plesk avec Let's Encrypt

| 3 minutes, 8 secondes

MAJ du 10/07/2018 : Depuis Plesk Onyx, la sécurisation du serveur email et de l'interface d'administration de Plesk est grandement simplifiée. rendez-vous dans Outils & Paramètres > Certificats SSL/TLS pour choisir les certificats à utiliser.

Depuis décembre 2015 et la sortie en bêta publique du service Let's Encrypt, les administrateurs d'un serveur Plesk peuvent installer en un clic un certificats SSL signé pour n'importe quel espace web (par exemple, ce blog est accessible via https grace à un certificat Let's Encrypt).

Malheureusement, l'extension Let's Encrypt de la plateforme Plesk ne gère pas les certificats utilisés par le serveur email, ce qui provoque des alertes de sécurité sur les clients mail récents. Vous pouvez tester votre configuration en saisissant l'une de vos adresses gérées par Plesk sur le site CheckTLS.com. Si toutes les case du résultat ne sont pas OK, vous avez probablement un problème de signature de certificat. Je vous propose ici de mettre en place un script et une tâche planifiée qui corrigeront le problème.

Le principe : rien de plus simple

Les certificats utilisés pour sécuriser l'accès web (HTTPS) et email (TLS over IMAP/SMTP) sont identiques. Nous allons donc demander à l'extension Let's Encrypt de générer les certificats pour le domaine associé au serveur email et les déplacer là où Plesk les attend à l'aide d'un simple script. Et puisque les certificats Let's Encrypt ne sont valable que 3 mois et renouvelé automatiquement par l'extension tous les mois, nous allons programmer une tâche planifiée qui renouvellera cette opération mensuellement.

La pratique : à peine plus compliqué

Identifier le domaine associé au serveur email

Par défaut, si Plesk joue le rôle de serveur DNS pour votre domaine, il aura créé l'entrée DNS suivante :

    votredomaine.tld.    MX (10)    mail.votredomain.tld.

Ceci signifie que le serveur mail qui gère les adresses en @votredomain.tld est mail.votredomain.tld. Pour vérifier le nom du serveur, ouvrez un terminal UNIX ou une invite de commande WINDOWS et tapez :

nslookup
> set type=MX
> votredomain.tld

Dans les exemples à suivre, vous devrez remplacer mail.votredomaine.tld par le domaine retourné par nsLookup.

Générer le certificat SSL

Si ce n'est pas déjà le cas, crééz dans Plesk le (sous-)domaine mail.votredomaine.tld et générez un certificat SSL avec l'extension Let's Encrypt.

Identifier les répertoires de destination

Plesk permet d'utiliser plusieurs applications pour le serveur mail :

  • Postfix ou Qmail pour le serveur SMTP
  • Dovecot ou Courrier-IMAP pour le serveur IMAP

Pour savoir quelles applications sont utilisées sur votre serveur (important pour la suite), rendez-vous sur votre interface Plesk dans le menu Outils & Paramètres, onglet Mail et cliquez sur Paramètres du serveur de messagerie :

Remplacer les certificats mail par défaut de Plesk par les certificats Let's Encrypt`

Let's Encrypt entrepose les certificats en plusieurs morceaux. Nous allons ici utiliser un script qui recompose le certificat et le dépose dans les répertoires des applications email. Vous devez supprimer les blocs qui ne correspondent pas aux applications de votre serveur :

#! /bin/bash

# Assemblage du certificat dans un fichier temporaire
cat /opt/psa/var/modules/letsencrypt/etc/live/mail.votredomaine.tld/privkey.pem > /tmp/temp.pem
cat /opt/psa/var/modules/letsencrypt/etc/live/mail.votredomaine.tld/fullchain.pem >> /tmp/temp.pem

######### BLOC POSTFIX #########
mv /etc/postfix/postfix_default.pem /etc/postfix/postfix_default.old.pem
cp /tmp/temp.pem /etc/postfix/postfix_default.pem

######### BLOC QMAIL #########
mv /var/qmail/control/servercert.pem /var/qmail/control/servercert.old.pem
cp /tmp/temp.pem /var/qmail/control/servercert.pem

######### BLOC DOVECOT #########
mv /etc/dovecot/private/ssl-cert-and-key.pem /etc/dovecot/private/ssl-cert-and-key.old.pem
cp /tmp/temp.pem /etc/dovecot/private/ssl-cert-and-key.pem

######### BLOC COURRIER-IMAP #########
mv /usr/share/courier-imap/imapd.pem /usr/share/courier-imap/imapd.old.pem
mv /usr/share/courier-imap/pop3d.pem /usr/share/courier-imap/pop3d.old.pem
cp /tmp/temp.pem /usr/share/courier-imap/imapd.pem
cp /tmp/temp.pem /usr/share/courier-imap/pop3d.pem

# Suppression du fichier temportaire
rm /tmp/tmp.pem

Renouveler l'opération tous les mois

Les certificats Let's Encrypt sont renouvelés tous les mois. Il faut donc executer ce script à la même fréquence (avec une marge d'erreur confortable puisque les certificats sont valides pendant 3 mois). Pour celà, Rendez-vous sur votre interface web Plesk dans le menu Outils & Paramètres, onglet Outils & Ressources et cliquez sur Tâches planifiées :

Cliquez sur le bouton Ajouter une tâche et renseignez les informations relative à votre script :

  • Type de tâche = commande
  • Commande = /chemin/vers/le/script.sh
  • Executer = tous les mois le 1er du mois (ou jour de votre choix) à l'heure de votre choix
  • Utilisateur système = root

Vous disposez désormais d'un serveur mail avec un certificat SSL signé et valide tant que vous ne désactivez pas l'extension Let's Encrypt.

Créer un média d'installation/ré… Utiliser Bash (le vrai) sous Win…

Commentaires