Autre chose que https ?
Si vous cherchez à migrer un service n'utilisant pas https, peut-être voulez-vous consulter la page CertificatsTLS
Le Crans utilise deux serveurs bakdaur (principal) et frontdaur (backup) qui permettent de centraliser le traffic entrant vers les services Web.
Les deux serveurs se partagent l'adresse IP liée à proxy.crans.org. En fonctionnement normal, bakdaur possède l'ip et reste en fonction. En cas de souci, frontdaur prend la main grâce à Keepalived. Ce deuxième serveur est aussi utile pour tester le déploiement d'une nouvelle configuration nginx, avant de l'appliquer pour tout le monde.
Avantages :
- Un seul serveur où gérer les renouvellements de certificats Let's Encrypt
- Moins de surface d'exposition pour les nombreuses machines qui fournissent des sites web
- Possibilité de se concentrer sur les réglages optimaux à un seul endroit
- Permet de compresser le flux HTTP/1.1 vers du HTTP/2 pour les clients le supportant
- Permet d'assurer une sécurité homogène sur tous les sites Crans
Inconvénients :
- Ne résout les soucis de SSL que pour le http
- Configuration moins « standard » que ce qu'on peut trouver comme tuto pour la mise en place de tout service https habituel
Legacy : avant on générait deux certificats (hostnames-a-m.crans.org et hostnames-n-z.crans.org) avec un challenge Let's Encrypt HTTP-01. Maintenant on a un certificat Wildcard avec un challenge DNS-01 qui permet de simplifier beaucoup la configuration.
Un schéma de principe résume la situation, avec deux alternatives possibles (fichiers statiques desservis par bakdaur ou le serveur initial).
Ticket phabricator: https://phabricator.crans.org/T9
Let's encrypt
La génération et le renouvellement des certificats se fait avec certbot. Voir le rôle Ansible pour plus de détails, mais en gros il parle à silice.crans.org pour ajouter temporairement une entrée DNS et effectuer un challenge DNS-01.
Pour initialiser le certificat la première fois, il faut lancer certbot avec les fichiers de conf dans /etc/letsencrypt/conf.d.
Renouvellement
C'est automatique avec un timer Systemd ! Si ça fail, prometheus relève l'alerte.
Je veux du HTTPS sur mon nouveau site !
Ci-dessous, la procédure étape par étape :
Ajouter la règle de reverse proxy dans network.yml ;
Lancer ce playbook Ansible avec --limit frontdaur.adm.crans.org et vérifier que ça marche ;
- Lancer ce playbook Ansible sur bakdaur ;
Danser sur place et profiter.