⇤ ← Version 1 à la date du 2016-03-17 13:32:27
4328
Commentaire:
|
4323
|
Texte supprimé. | Texte ajouté. |
Ligne 4: | Ligne 4: |
Ligne 8: | Ligne 7: |
Si vous chercher uniquement à passer un site web de http à https, merci de consulter la page [[/CentralisationHttps]] |
Si vous chercher uniquement à passer un site web de http à https, merci de consulter la page [[../CentralisationHttps|CentralisationHttps]] |
Ligne 11: | Ligne 9: |
Ligne 17: | Ligne 14: |
* 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` |
* 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` |
Ligne 25: | Ligne 22: |
* 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 `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`: . {{{ |
Ligne 35: | Ligne 32: |
* Lancer un run de bcfg2 (`sudo bcfg2 -I -q`) qui va ajouter les dépots `backports` où se trouve le binaire `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 `letsencrypt`. |
* Lancer un run de bcfg2 (`sudo bcfg2 -I -q`) qui va ajouter les dépots `backports` où se trouve le binaire `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 `letsencrypt`. |
Ligne 39: | Ligne 36: |
* 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. | * 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. |
Ligne 41: | Ligne 38: |
* Si nginx est installé sur la machine, vous devez ajouter `include "snippets/letsencrypt-webroot.conf";` à tous les sites activé dans `/etc/nginx/sites-enabled`. | * Si nginx est installé sur la machine, vous devez ajouter `include "snippets/letsencrypt-webroot.conf";` à tous les sites activé dans `/etc/nginx/sites-enabled`. |
Ligne 43: | Ligne 40: |
* Lancer `sudo letsencrypt --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/`. | * Lancer `sudo letsencrypt --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/`. |
Ligne 45: | Ligne 42: |
* 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é) | * 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é) |
Ligne 50: | Ligne 47: |
Ligne 51: | Ligne 49: |
Normalement, lancer `sudo letsencrypt 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 `letsencrypt renew`. La commande suivante peux également être envisagée comme renouvellement automatique : `sudo letsencrypt --keep-until-expiring --expand --non-interactive --config /etc/letsencrypt/conf.d/localhost.ini certonly` |
Normalement, lancer `sudo letsencrypt 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 `letsencrypt renew`. La commande suivante peux également être envisagée comme renouvellement automatique : `sudo letsencrypt --keep-until-expiring --expand --non-interactive --config /etc/letsencrypt/conf.d/localhost.ini certonly` |
Uniquement https ?
Si vous chercher uniquement à passer un site web de http à https, merci de consulter la page 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 Let's Encrypt. Pour ses services interne (essentiellement, tout ce qui est sur le vlan adm), le Crans utilise toujours 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:
<Group name="geet" profile="true"> […] <Group name="letsencrypt"/> </Group>
- 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 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 letsencrypt.
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 letsencrypt --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 letsencrypt 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 letsencrypt renew. La commande suivante peux également être envisagée comme renouvellement automatique : sudo letsencrypt --keep-until-expiring --expand --non-interactive --config /etc/letsencrypt/conf.d/localhost.ini certonly