====== 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