Prochaine révision | Révision précédente |
informatique:securite:letsencrypt [2019/02/04 18:12] – créée bn8 | informatique:securite:letsencrypt [2019/02/04 18:37] (Version actuelle) – [Génération initial du certificat] bn8 |
---|
<code bash>apt install certbot</code> | <code bash>apt install certbot</code> |
| |
| <note tip>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// : <code bash>wget -O /usr/local/sbin/certbot-auto https://dl.eff.org/certbot-auto |
| chmod 755 /usr/local/sbin/certbot-auto</code> |
| 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]].</note> |
===== Pré-configuration d'Apache ===== | ===== Pré-configuration d'Apache ===== |
| |
* Mettre en place un fichier //index.html// témoins : <code bash>echo "No site here" > /var/www/well-known/public_html/.well-known/acme-challenge/index.html</code> | * Mettre en place un fichier //index.html// témoins : <code bash>echo "No site here" > /var/www/well-known/public_html/.well-known/acme-challenge/index.html</code> |
* Mettre en place un //alias// dans la configuration //Apache// pour ce dossier : <code bash>echo "Alias /.well-known/acme-challenge/ /var/www/well-known/public_html/.well-known/acme-challenge/" > /etc/apache2/conf-available/well-known.conf | * Mettre en place un //alias// dans la configuration //Apache// pour ce dossier : <code bash>echo "Alias /.well-known/acme-challenge/ /var/www/well-known/public_html/.well-known/acme-challenge/" > /etc/apache2/conf-available/well-known.conf |
e2enconf well-known</code> | a2enconf well-known</code> |
* 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 : <code apache>RewriteEngine on | * 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 : <code apache>RewriteEngine on |
RewriteCond %{REQUEST_URI} !(^/\.well-known/.*$) | RewriteCond %{REQUEST_URI} !(^/\.well-known/.*$) |
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301]</code> | RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301]</code> |
| |
<note tip>Si ce n'est pas fait, penser à activer le module //rewrite// : <code bash>a2enmod rewrite</code></note> | <note tip>Si ce n'est pas fait, penser à activer le module //rewrite// pour que cela fonctionne : <code bash>a2enmod rewrite |
| service apache2 force-reload</code></note> |
| * Recharger la configuration d'Apache : <code bash>service apache2 reload</code> |
| |
===== Test avant d'aller plus loin ===== | ===== Test avant d'aller plus loin ===== |
===== Génération initial du certificat ===== | ===== Génération initial du certificat ===== |
| |
Générez le certificat à l'aide de la commande suivante : <code>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"</code> | Générez le certificat à l'aide de la commande suivante : <code bash>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"</code> |
| |
<note tip>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%%''.</note> | <note tip>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%%''.</note> |
| |
| 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 : <code apache> |
| 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</code> |