Quand on gère un serveur personnel la question se pose très vite de devoir sécuriser les services qu'on héberge. La majorité des services ont la possibilité de fournir une couche de sécurité entre le client et le serveur nommée SSL/TLS.
La plus part des guides d'installation sur le web présentent cette possibilité en utilisant un système de certificats auto-signés. Ces certificats sont très pratiques mais ne garantissent pas l'authentification du serveur, il déclenchent donc systématiquement un avertissement du client. Pour authentifier un serveur il faut utiliser des certificats signés par des autorités reconnues. C'est un service est généralement très onéreux cependant il existe une autorité nommée StartSSL qui fournie gratuitement et facilement des certificats basiques réservés aux particuliers.
Afin de comprendre globalement de quoi il retourne il faut comprendre le mécanisme de clé publique qui a révolutionné les systèmes de chiffrement. Il s'agit de deux clés liées mathématiquement entre elles :
Ainsi la plus part des fichiers de configuration de services font références à deux fichiers qui correspondent, à quelques détails près, à une clé privée et une clé publique.
Après avoir créé un compte sur StartSSL en suivant la procédure qui vise vous identifier en tant qu'individu vous pouvez lier un domaine à votre compte en prouvant que vous êtes bien propriétaire de ce domaine. Généralement il vous est demandé de prouver que vous avez accès à postmaster@domain.tld
. Vous pourrez ensuite créer un certificat valable pour un sous-domaine et le domaine de base. Le certificat sera obligatoirement valable pour, par exemple :
mail.domaine.tld
domaine.tld
C'est à vous de voir à l'usage de quoi vous avez besoin. Pour un serveur web créer le certificat pour www.domaine.tld
et pour domaine.tld
peut être un choix judicieux. Le certificat ainsi créé sera valable pendant un an. Il devra donc être renouvelé annuellement.
A la fin de la procédure de choix de domaine vous obtenez une clé privée ssl.key
chiffrée avec un mot de passe que vous aurez choisi et un certificat ssl.crt
. Déchiffrez la clé privée avec :
openssl rsa -in ssl.key -out ssl.key
Note : Il faut avoir bien en tête que cette clé ainsi que tous les fichiers où elle sera présente doivent rester impérativement privés. La clé privée ne doit pas sortir de votre serveur sans être sécurisée.
Dans la majorité des cas pour que votre certificat soit reconnu par les clients il faut qu'il comporte aussi deux autres certificats de StartSSL : sub.class1.server.ca.pem (Intermediate CA) et ca.pem (StartCom Root CA) disponibles sur le site de StartSSL Les chaînes sont sous la forme de fichiers textes contenant les certificats les uns à la suite des autres, elles peuvent donc êtres éditées facilement.
Chaque service a besoin des mêmes informations (votre clé privée, votre certificat, le certificat intermédiaire et le certificat root) mais pas toujours sous la même forme. Il va donc s'agir ici de créer des fichiers contenant la chaîne de certificat attendue par le logiciel.
Le serveur web Lighttpd a besoin de deux fichiers contenant dans l'ordre :
/etc/ssl/certs/ca-certs-startssl.crt
(root:root 644)
/etc/ssl/private/startssl.crt
(root:root 600)
Ajoutez à /etc/lighttpd/lighttpd.conf
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.ca-file = "/etc/ssl/certs/ca-certs-startssl.crt" ssl.pemfile = "/etc/ssl/private/startssl.crt" }
Le serveur IMAP/POP Dovecot a besoin de deux fichiers contenant dans l'ordre :
/etc/ssl/certs/mail-startssl.pem
(root:root 644)
/etc/ssl/private/startssl.key
(root:root 600)
Modifiez dans /etc/dovecot/dovecot.conf
ssl_cert = </etc/ssl/certs/mail-startssl.pem ssl_key = </etc/ssl/private/startssl.key
Le serveur SMTP Postfix utilise les mêmes fichiers que Dovecot :
Modifiez dans /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/ssl/certs/mail-startssl.pem smtpd_tls_key_file = /etc/ssl/private/startssl.key