====== Let's Encrypt ======
===== Installation de l'agent certbot =====
apt install certbot
Sur de vieux système ou des systèmes ne proposant pas de paquet pour //certbot// (voir méthodes de déploiement officielles [[https://certbot.eff.org/|ici]]), vous pouvez utiliser la version //auto// : wget -O /usr/local/sbin/certbot-auto https://dl.eff.org/certbot-auto
chmod 755 /usr/local/sbin/certbot-auto
Il s'agit d'une version qui gère sa auto-mise à jour automatique à chaque exécution.
Pour les systèmes incompatibles, il est également possible d'utiliser l'agent [[https://acme.sh|acme.sh]].
===== Pré-configuration d'Apache =====
* Créer le dossier qui servira aux //challenge ACME// : mkdir -p /var/www/well-known/public_html/.well-known/acme-challenge/
* Mettre en place un fichier //index.html// témoins : echo "No site here" > /var/www/well-known/public_html/.well-known/acme-challenge/index.html
* Mettre en place un //alias// dans la configuration //Apache// pour ce dossier : echo "Alias /.well-known/acme-challenge/ /var/www/well-known/public_html/.well-known/acme-challenge/" > /etc/apache2/conf-available/well-known.conf
a2enconf well-known
* Dans le //VirtualHost HTTP// du site sur lequel, si une redirection //HTTP// vers //HTTPS// est place, il faut l'adapter pour laisser passer les requêtes des challenges ACME, par exemple : RewriteEngine on
RewriteCond %{REQUEST_URI} !(^/\.well-known/.*$)
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301]
Si ce n'est pas fait, penser à activer le module //rewrite// pour que cela fonctionne : a2enmod rewrite
service apache2 force-reload
* Recharger la configuration d'Apache : service apache2 reload
===== Test avant d'aller plus loin =====
Appelez l'URL du genre //%%http://[fqdn]/.well-known/acme-challenge/index.html%%// : Ça devrait retourner ''%%No site here%%''.
===== Génération initial du certificat =====
Générez le certificat à l'aide de la commande suivante : certbot certonly --non-interactive --agree-tos --webroot --webroot-path /var/www/well-known/public_html --email dns@example.com -d ${FQDN} -d ${AUTRE_FQDN} -d ${AUTRE_FQDN_SI_BESOIN} --renew-hook "/usr/sbin/service apache2 restart"
Le nom du certificat est normalement le premier //FQDN// listé, mais au besoin il peut être spécifié explicitement à l'aide du paramètre ''%%--cert-name%%''.
Le certificat a normalement été généré et déposé dans le dossier ''/etc/letsencrypt''. Pour l'utiliser, le plus simple est de pointer vers les liens symboliques maintenues par //certbot// lors de chaque mise à jour :
* **/etc/letsencrypt/live/[cert name]/privkey.pem :** la clé privée
* **/etc/letsencrypt/live/[cert name]/cert.pem :** le certificat
* **/etc/letsencrypt/live/[cert name]/chain.pem :** la chaîne de certification
* **/etc/letsencrypt/live/[cert name]/fullchain.pem :** le certificat et sa chaîne de certification (ordre : //"de la feuille vers tronc"//)
===== Utilisation du certificat dans Apache =====
* Dans votre //VirtualHost SSL//, ajouté les lignes suivantes :
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/[cert name]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[cert name]/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/[cert name]/chain.pem