Obtenir gratuitement un certificat SSL reconnu par l'ensemble des navigateurs avec Let's Encrypt
Publié le
Vous en avez assez des messages des navigateurs vous rappelant que vous êtes pauvre car votre site n'a pas de certificat SSL valide (vous l'avez probablement auto-signé pour pouvoir utiliser le chiffrement du HTTPS sans avoir à débourser des sommes folles pour qu'une autorité de certification vous délivre un “vrai” certificat) ?
Alors bonne nouvelle, l’Internet Security Research Group s'est donnée pour mission, je cite :
de réduire les barrières financières, technologiques pour sécuriser les communications sur Internet.
Ce groupe est constitué notamment de représentants d'Akamai, Mozilla ou encore Cisco, rien que ça !
Avec le service Let's Encrypt, leur objectif est de massifier l'utilisation du HTTPS en le rendant accessible à tous :
- en automatisant les tâches de création/validation/renouvellement du certificat, configuration des serveurs, …
- en le proposant gratuitement (ce qui vous intéresse).
Installation
Alors on y va, on commence par cloner le dépôt Git présent sur Github :
cd /usr/local/bin
sudo git clone https://github.com/letsencrypt/letsencrypt
Et c'est fini !
Création du certificat
On appelle la fonction de création de certificat spécifique à Apache :
cd /usr/local/bin/letsencrypt
./letsencrypt-auto run --apache -m vous@votrefournisseurmail.tld --renew-by-default --agree-tos --no-redirect -d votredomaine.tld -d www.votredomaine.tld -d unautresousdomaine.votredomaine.tld
Ça mouline un long moment, et voilà ! Les certificats sont déposés dans le répertoire : /etc/letsencrypt/live/votredomaine.tld/
Pour détailler un peu les paramètres passés :
./letsencrypt-auto
est la commande de base,run
indique qu'on veut lancer "pour de vrai",--apache
indique que l'on veut mettre à jour les fichiers de configuration des virtual hosts (cela fonctionne pour Apache 2.4),-m vous@votrefournisseurmail.tld
fournit votre adresse mail pour votre compte Let’s Encrypt ; c'est avec cette adresse que vous serez contacté (pour le renouvellement, pour l'assistance, ...),--renew-by-default
permet lorsque vous relancez la commande d'orienter sur le processus de renouvellement plutôt que création,--agree-tos
indique vous acceptez les conditions d'utilisations du service Let’s Encrypt,--no-redirect
est un paramètre indiquant que vous ne souhaitez pas faire de redirection http → https systématiquement (personnellement je préfère le gérer séparément pour chaque virtual host),
est le nom du domaine pour lequel vous souhaitez un certificat, si vous voulez couvrir plusieurs sous-domaines avec le même certificat, il suffit d'écrire autant de fois ce paramètre que vous avez de sous-domaines à certifier.-d votredomaine.tld
On va vérifier que la configuration des virtual hosts a bien été effectuée, normalement la commande suivante vous retourne 2 lignes (SSLCertificateFile
et SSLCertificateKeyFile
) pour chaque virtual host :
grep '/etc/letsencrypt/live' /etc/apache2/sites-enabled/*.conf
Renouvellement
Les certificats sont valables 90 jours, il faut donc prévoir leur renouvellement via un job Cron (tous les 2 mois pour être tranquille) :
crontab -e
Puis y saisir :
0 0 1 */2 * /usr/local/bin/letsencrypt/letsencrypt-auto run --apache -m vous@votrefournisseurmail.tld --renew-by-default --agree-tos --no-redirect -d votredomaine.tld -d www.votredomaine.tld -d unautresousdomaine.votredomaine.tld
Certains ont écrit des scripts plus évolués qui permettent de vérifier plus régulièrement la durée de validité restante et de déclencher le renouvellement quand il arrive à un certain seuil, c'est notamment pratique afin de gérer les cas où le renouvellement rencontre une erreur et de prévenir par mail l'administrateur quand le délai devient critique. Si cela vous intéresse : Google est votre ami ☺
Un dernier point : la création/renouvellement de certificat n'est valable que pour des sites accessibles sur internet, autrement dit : un site qui n'est accessible que sur votre réseau local n'est pas éligible à la certification via Let's Encrypt.