#format wiki #language fr #acl +All:read {{{#!wiki caution '''Uniquement https ?''' Si vous cherchez uniquement à passer un site web de http à https, merci de consulter la page [[../CentralisationHttps|CentralisationHttps]] }}} On va expliquer ici comment obtenir un certificat valide pour la plupart des logiciels pour autre chose que du `https` (`imap`, `smtp`, `xmpp`…), ou si vous ne pouvez pas faire pointer le nom à faire passer en `https` vers `proxy.crans.org` (par exemple pour `gitlab.crans.org` auquel on accède à la fois en `https` et en `ssh`). L'autorité de certification (AC) reconnue actuellement utilisée par le Crans pour ses services publiques est [[https://letsencrypt.org|Let's Encrypt]]. Pour ses services internes (essentiellement, tout ce qui est sur le [[CransTechnique/AdminRéseau/VLAN#Les_VLANs_au_Crans|vlan adm]]), le Crans utilise toujours [[CransTechnique/CaCert|CaCert]]. = Obtention d'un certificat = * Pour obtenir un certificat pour une machine, il faut comme pré-requis que cette machine soit accessible depuis internet sur le port 80. Il faut donc ouvrir le port entrant sur le pare-feu. Pour cela : * Se connecter en ssh sur `thot.crans.org` et lancer `crans`. * Choisir `Modifier une machine existante`, trouver la machine avec une adresse ip publique (pour être accessible depuis internet il faut une ip publique). * Aller dans le menu `Information` et mettre le port `80` dans `Port TCP ouvert vers l'extérieur`. * Attendre un run de generate.py sur `odlyd.crans.org` ou bien : * Se connecter en ssh sur `odlyd.crans.org` * Lancer `sudo /usr/scripts/gestion/gen_confs/generate.py` * Ensuite, ajouter le groupe `letsencrypt` à la machine dans bcfg2. * Se connecter en ssh sur `bcfg2.adm.crans.org` * Aller dans `/bcfg2/Metadata` et éditer le fichier `groups.xml` * Chercher la définition du groupe de la machine et y ajouter le groupe `letsencrypt`, par exemple pour `geet.crans.org`: . {{{ […] }}} * Se connecter en ssh sur la machine et y effectuer les opérations suivantes : * Lancer un run de bcfg2 (`sudo bcfg2 -I -q`) qui va ajouter les dépôts `backports` où se trouve le binaire `certbot` qui est le client letsencrypt. * Mettre à jour la liste des paquets : `sudo apt-get update` * Relancer un run de bcfg2 (`sudo bcfg2 -I -q`), il devrait alors normalement installer le paquet `certbot`. Le paquet n'est pas disponible sous wheezy pour les machines pas encore à jour. Il convient donc alors d'utiliser le script `/usr/scripts/src/letsencrypt/certbot-auto` en lieu et place de la commande `cerbot` dans ce qui suit. * Normalement, bcfg2 devrait avoir créé un fichier de configuration pour générer le certificat letsencrypt dans `/etc/letsencrypt/conf.d/localhost.ini`. Regardez le fichier pour voir s'il correspond bien au certificat que vous souhaitez générer (notamment le paramètre `domains`). Vous pouvez aussi vérifier le paramètre `authenticator`. Il devrait valoir `webroot` si nginx est installé sur la machine et `standalone` sinon. * Si nginx est installé sur la machine, vous devez ajouter `include "snippets/letsencrypt-webroot.conf";` à tous les sites activés dans `/etc/nginx/sites-enabled`. * Lancer `sudo certbot --config /etc/letsencrypt/conf.d/localhost.ini certonly` pour générer la clef privée et le certificat. Ils seront alors mis dans le dossier `/etc/letsencrypt/live/_nom_de_la_machine/`. * Ce certificat est valide 90 jours. Il conviendra de le renouveler tous les 60 jours (lorsqu'il restera strictement moins de 30 jours de validité) = Renouvellement d'un certificat = == Manuellement == Appliquer exactement la même procédure que pour obtenir un certificat. Normalement les deux premiers points (ouvrir le port 80 et mettre `letsencrypt` dans bcfg2) sont déjà fait. C'est là également la marche à suivre si on veut ajouter un nom ou retirer un nom au certificat. == Automatiquement == Sur les machines du groupe `letsencrypt` (autre que le proxy https) un cron (`/etc/cron.d/letsencrypt`) est automatiquement installé qui exécute `certbot renew -q` tous les jours. Le comportement est le suivant : si un certificat expire dans moins de 30 jours, alors on le renouvelle avec les mêmes paramètres que la dernière fois qu'il a été généré manuellement. Les renouvellements ne sont pas comptés dans le ratelimit qui limite le nombre de certificats par `second level domain`, mais ont une limite différente : pour chaque certificat qui a déjà été émis, on peut générer jusqu'à 5 certificats par semaine avec le même ensemble de noms dans les `subject alt names`. Un autre cron, `/etc/cron.d/letsencrypt_check_cert` vérifie que le dernier certificat généré est bien celui utilisé par l'application, et sinon, redémarre/recharge l'application pour qu'elle utilise le dernier certificat. ---- * CatégoriePagePublique * CatégorieCrans