Frappe Framework
HTTPS avec Let’s Encrypt
Une commande bench demande le certificat et ajoute un renouvellement mensuel à la crontab de root. On peut aussi passer par Certbot à la main.
Prérequis
- Un multi-tenant par DNS.
- Le site accessible par un domaine valide.
- Les droits root.
Les certificats Let’s Encrypt expirent tous les trois mois. La pose manuelle du certificat dans nginx est dans Configurer HTTPS.
Commande bench
sudo -H bench setup lets-encrypt [site-name]Plusieurs questions sont posées. La commande ajoute aussi une entrée à la crontab de root, qui tente un renouvellement chaque mois. Cela exige des droits élevés.
Domaine personnalisé, voir Ajouter des domaines personnalisés :
sudo -H bench setup lets-encrypt [site-name] --custom-domain [custom-domain]Renouvellement manuel : sudo bench renew-lets-encrypt.
Méthode manuelle
Téléchargez le script Certbot-auto adapté dans /opt, depuis certbot.eff.org. Arrêtez nginx : sudo service nginx stop. Lancez ./opt/certbot-auto certonly --standalone. Indiquez un e-mail pour les avis et la récupération de clé, acceptez l’accord, puis les noms de domaine. Un seul certificat peut couvrir plusieurs noms, par exemple example.com et www.example.com, s’ils sont tous saisis.
Fichiers PEM, sous /etc/letsencrypt/live/example.com : cert.pem, chain.pem, fullchain.pem (certificat et chaîne) et privkey.pem.
Dans frappe-bench/sites/{{site_name}}/site_config.json :
"ssl_certificate": "/etc/letsencrypt/live/example.com/fullchain.pem",
"ssl_certificate_key": "/etc/letsencrypt/live/example.com/privkey.pem"Puis bench setup nginx et sudo service nginx restart.
Renouvellement expérimental
En root, crontab -e :
MAILTO="[email protected]"
0 0 1-7 * * [ "$(date '+\%a')" = "Mon" ] && sudo service nginx stop && /opt/certbot-auto renew && sudo service nginx startLa source le décrit comme le premier lundi du mois, à minuit, avec un e-mail si la ligne s’exécute. Nginx est arrêté le temps du renouvellement.
Point d’attention
Sans renouvellement, le certificat de trois mois cesse d’être valable. La crontab bench est mensuelle. La méthode manuelle arrête nginx pendant Certbot et pendant le renouvellement expérimental.
