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