Outils pour utilisateurs

Outils du site


admin:services:letsencrypt

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
admin:services:letsencrypt [2016/09/23 17:11] – [Installation] typo david.sinquinadmin:services:letsencrypt [2020/04/27 15:47] – ajout de --cert-name zertrin
Ligne 18: Ligne 18:
  
 Après avoir pris en compte tout ceci, il fut décidé de s'en tenir //pour le moment// au client officiel, avec pour but de migrer vers une alternative plus adaptée une fois que la poussière sera retombée et qu'une meilleure alternative stable et viable se présentera. Après avoir pris en compte tout ceci, il fut décidé de s'en tenir //pour le moment// au client officiel, avec pour but de migrer vers une alternative plus adaptée une fois que la poussière sera retombée et qu'une meilleure alternative stable et viable se présentera.
 +
 +==== Procédure d'install plus simple ====
 +
 +Le certbot a évolué depuis le début et il n'est plus nécessaire d'effectuer des hacks aussi gros pour le faire marcher. Les plugins automatiques type apache et nginx peuvent avoir des comportements non désirés dans des configurations non usuelles, il est déconseillé de les utiliser.
 +
 +On installera le certbot depuis les backports jessie ou les dépots stretch.
 +
 +Il existe deux méthodes pour réaliser le challenge en HTTP : 
 +  le serveur en standalone (qui n'est viable **UNIQUEMENT si AUCUN SERVEUR WEB NE TOURNE SUR LE PORT 80**)
 +  le webroot qui consiste à rediriger les requêtes des serveurs LE dans un dossier différent de celui de l'application web usuelle.
 +
 +Nous choisirons ici le deuxième méthode le plus souvent.
 +
 +Pour un nginx la configuration à placer dans le vhost est la suivante : 
 +
 +  location ^~ /.well-known { root /var/www/letsencrypt; }
 +
 +Il faut que le dossier existe (un coup de mkdir devrait suffire). Il doit appartenir à l'utilisateur du certbot (root par défaut) et être disponible en lecture pour www-data.
 +
 +Enfin, il faut mettre en place le cron de renouvellement des certificats s'il n'a pas été ajouté lors de l'installation du certbot (dans /etc/cron.d/certbot mode 0644)
 +
 +  0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "/bin/systemctl reload nginx"
 +
 +On notera le renew hook qui permet de relancer les services si un nouveau certificat doit être pris en compte. On pourra faire un script pour le hook s'il n'est pas une commande courte et simple.
 +
 +Tout est prêt pour générer le certificat :)
 +
 +Il suffit de placer une commande du type : 
 +
 +  certbot certonly --cert-name mon.certificat.tld --rsa-key-size 4096 \
 +  --email admin@federez.net --webroot -w /var/www/letsencrypt -d domain1.tld -d domain2.tld
 +
 +
 +La première fois on vous demandera de dire oui aux TOSS. Pour les test il faut apposer --dry-run. Il est obligatoire de faire des tests jusqu'à ce que ça marche, il y a toujours des oublis.
 +
 +Si on veut étendre un certificat existant on peut placer un --extend et il faut mettre le même nom.
 +
 +Pour avoir une idée de quels certificats sont existants un ''certbot certificates'' marche très bien.
 +
  
 ==== Vue d'ensemble du système ==== ==== Vue d'ensemble du système ====
Ligne 32: Ligne 71:
   * Un **script de monitoring des certificats SSL** est en place pour vérifier la durée de validité restante et alerter si le certificat s'approche de son expiration : voir [[admin:services:ssl-cert-check]].   * Un **script de monitoring des certificats SSL** est en place pour vérifier la durée de validité restante et alerter si le certificat s'approche de son expiration : voir [[admin:services:ssl-cert-check]].
  
-<WRAP center round alert+<WRAP center round info 
-Pour le moment**il faut absolument éviter de retirer un sous-domaine de la liste des domaines** après que le certificat ait été déjà émis. Lors du renouvellement une nouvelle "lignée" de certificats sera créée ne se trouvant pas dans le dossier de destination attendu par les services.+Précédemment, il fallait absolument éviter de retirer un sous-domaine de la liste des domaines après que le certificat ait été déjà émis. Lors du renouvellement une nouvelle "lignée" de certificats était créée ne se trouvant pas dans le dossier de destination attendu par les services.
  
-Ceci est du au bug https://github.com/certbot/certbot/issues/2071+Ceci était du au bug https://github.com/certbot/certbot/issues/2071
  
-Il est cependant possible d'ajouter des SAN sans problème.+Il était cependant possible d'ajouter des SAN sans problème.
  
-Pour retirer un sous domaine, contactez Zertrin auparavant pour coordonner l'opération tant que le bug 2071 n'est pas résolu.+Désormais, il suffit que l'option ''--cert-name'' soit donnée quand on appelle certbot. Cela définit la "lignée" de certificats et donc, si on retire un sous domaine de la listeil comprendra que c'est bien ce qu'on veut faire.
 </WRAP> </WRAP>
  
Ligne 56: Ligne 95:
  
 <code> <code>
-apt-get install -t jessie-backports certbot+apt-get install certbot
 </code> </code>
  
Ligne 63: Ligne 102:
 <code> <code>
 sudo dpkg-divert --add --rename --divert /etc/cron.d/certbot.disabled /etc/cron.d/certbot sudo dpkg-divert --add --rename --divert /etc/cron.d/certbot.disabled /etc/cron.d/certbot
 +</code>
 +
 +On désactive aussi le service et le timer systemd qui viennent en doublon du fichier de cron :
 +<code>
 +systemctl stop certbot.service certbot.timer
 +systemctl disable certbot.service certbot.timer
 +systemctl mask certbot.service certbot.timer
 </code> </code>
  
Ligne 109: Ligne 155:
  
  
-Pour éviter de définir pour chaque site un bloc de configuration pour HTTP afin de rediriger les navigateurs vers la version HTTPS de chaque site, on peut créer un fichier '''/etc/apache2/site-available/000-no-tls.conf''' avec :+Pour éviter de définir pour chaque site un bloc de configuration pour HTTP afin de rediriger les navigateurs vers la version HTTPS de chaque site, on peut créer un fichier '''/etc/apache2/sites-available/000-no-tls.conf''' avec :
 <file apache /etc/apache2/sites-available/000-no-tls.conf> <file apache /etc/apache2/sites-available/000-no-tls.conf>
 <VirtualHost *:80> <VirtualHost *:80>
Ligne 117: Ligne 163:
         RewriteEngine On         RewriteEngine On
         RewriteCond %{HTTPS} !=on         RewriteCond %{HTTPS} !=on
 +        
         # Pas de redirection pour les requêtes de Let's Encrypt         # Pas de redirection pour les requêtes de Let's Encrypt
         RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/.*$         RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/.*$
 +        
         # Redirection vers un domaine de federez.net         # Redirection vers un domaine de federez.net
         RewriteCond %{HTTP_HOST} ^([^.]+\.)?federez\.(fr|eu|org|net)         RewriteCond %{HTTP_HOST} ^([^.]+\.)?federez\.(fr|eu|org|net)
Ligne 126: Ligne 174:
                 ProxyPass /.well-known/acme-challenge !                 ProxyPass /.well-known/acme-challenge !
         </IfModule>         </IfModule>
 +        
         <IfModule mod_alias.c>         <IfModule mod_alias.c>
                 Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge                 Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge
Ligne 203: Ligne 252:
 # Il est cependant possible d'ajouter des SAN sans problème. # Il est cependant possible d'ajouter des SAN sans problème.
  
-/usr/bin/letsencrypt certonly --config /etc/letsencrypt/cli.ini --non-interactive \+/usr/bin/letsencrypt certonly --config /etc/letsencrypt/cli.ini --non-interactive --quiet \ 
 +  --cert-name quigon.federez.net \
   -d quigon.federez.net \   -d quigon.federez.net \
   -d ldap-ro.federez.net \   -d ldap-ro.federez.net \
   -d wiki-backup.federez.net \   -d wiki-backup.federez.net \
   -d git.federez.net \   -d git.federez.net \
-  -t+  --text
  
 NEWHASH_CERT=$(sha1sum $FULLCHAINPATH | cut -d" " -f 1) NEWHASH_CERT=$(sha1sum $FULLCHAINPATH | cut -d" " -f 1)
Ligne 335: Ligne 385:
 TLSProtocol                             TLSv1.2 TLSProtocol                             TLSv1.2
 TLSRequired                             on TLSRequired                             on
 +</code>
 +
 +=== Prosody ===
 +
 +Dans ''/etc/prosody/prosody.cfg.lua'' :
 +
 +<code>
 +ssl = {
 +        key = "/etc/letsencrypt/live/EXAMPLE.federez.net/privkey.pem";
 +        certificate = "/etc/letsencrypt/live/EXAMPLE.federez.net/fullchain.pem";
 +}
 </code> </code>
  
admin/services/letsencrypt.txt · Dernière modification : 2020/06/17 18:23 de zertrin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki