#format wiki #language fr #acl +All:read {{{#!wiki caution '''Uniquement https ?''' Si vous chercher 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`, …) où 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é par le Crans pour ses services publiques est [[https://letsencrypt.org|Let's Encrypt]]. Pour ses services interne (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 `zamok.crans.org` et lancer `crans`. * Choisisser `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`. * Attendez un run de generate.py sur `odlyd.crans.org` oubien : * Se connecter en ssh sur `odlyd.crans.org` * Lancer `sudo /usr/scripts/gestion/gen_confs/generate.py` * Ensuite, ajoutez le groupe `letsencrypt` à la machine dans bcfg2. * Se connecter en ssh sur `bcfg2.adm.crans.org` * Aller dans `/bcfg2/Metadata` et éditez 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épots `backports` où se trouve le binaire `certbot` qui est le client letsencrypt. * Mettez a jour la liste des paquets: `sudo apt-get update` * Relancer un run de bcfg2 (`sudo bcfg2 -I -q`), il devrait normalement alors 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éer 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 (notemment 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 `stanalone` sinon. * Si nginx est installé sur la machine, vous devez ajouter `include "snippets/letsencrypt-webroot.conf";` à tous les sites activé 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 renouveller tous les 60 jours (lors qu'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. == Automatiquement == Normalement, lancer `sudo ``certbot renew` devrait renouveler tous les certificats locaux expirant dans moins de 30 jours et uniquement ceux là. Il serait donc judicieux de placer la commande dans un cron weekly. Notez cependant que le rédacteur de ces lignes n'a pas testé la commande `certbot renew`. La commande suivante peux également être envisagée comme renouvellement automatique : `sudo ``certbot --keep-until-expiring --expand --non-interactive --config /etc/letsencrypt/conf.d/localhost.ini certonly` ---- * CatégoriePagePublique * CatégorieCrans