Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Exploitation

Certificat SSL

Générer et renouveler un certificat SSL Let's Encrypt pour un site Dokos auto-hébergé, y compris pour un domaine personnalisé, ou installer votre propre certificat.

Certificat SSL

Vous pouvez générer un certificat gratuit avec Let's Encrypt, ou installer votre propre certificat. Cette page concerne une installation auto-hébergée : sur Dokos Cloud, les certificats sont gérés pour vous.

Prérequis

  1. Le bench est en mode DNS multi-tenant (bench config dns_multitenant on). Sinon, la commande s'arrête avec le message You cannot setup SSL without DNS Multitenancy. Voir Domaines et multi-tenant.
  2. Le nom de domaine pointe vers le serveur (entrée DNS de type A).
  3. Les ports 80 et 443 du serveur sont ouverts.
  4. Vous pouvez lancer des commandes en tant que root (sudo).
  5. Certbot est installé. Suivez les instructions de Certbot pour votre système.

Générer un certificat pour un site

sudo -H bench setup lets-encrypt <site>

La commande demande une confirmation : elle arrête Nginx quelques instants, et vos sites sont alors inaccessibles. Ensuite, elle :

  1. écrit la configuration de Certbot dans /etc/letsencrypt/configs/<site>.cfg ;
  2. demande le certificat à Let's Encrypt ;
  3. ajoute le certificat à la configuration du site et régénère la configuration Nginx ;
  4. ajoute une tâche planifiée de renouvellement dans la crontab de root.

Exemple fictif : sudo -H bench setup lets-encrypt compta.example.com. Le site répond ensuite sur https://compta.example.com.

Générer un certificat pour un domaine personnalisé

Le domaine doit d'abord être ajouté au site avec bench setup add-domain (voir Domaines et multi-tenant). Sinon, la commande répond No custom domain named … set for site.

sudo -H bench setup lets-encrypt <site> --custom-domain <domaine>

Générer un certificat générique (wildcard)

Pour couvrir tous les sous-domaines d'un domaine (*.example.com) :

sudo -H bench setup wildcard-ssl example.com --email admin@example.com

Let's Encrypt vérifie alors le domaine par une entrée DNS de type TXT, que vous ajoutez à la main chez votre registraire. --exclude-base-domain exclut example.com lui-même du certificat.

Renouveler un certificat

Un certificat Let's Encrypt est valable 90 jours. Certbot le renouvelle quand il reste moins de 30 jours.

La tâche planifiée ajoutée par bench setup lets-encrypt lance chaque jour à minuit :

certbot renew -a nginx --post-hook "systemctl reload nginx"

Si le renouvellement automatique échoue, renouvelez à la main :

sudo bench renew-lets-encrypt

Cette commande réinstalle la tâche planifiée, arrête Nginx, lance certbot renew, puis redémarre Nginx.

Pour vérifier la date d'expiration, lancez sudo certbot certificates.

Installer votre propre certificat

Si vous avez déjà un certificat et sa clé privée :

bench set-ssl-certificate <site> /chemin/absolu/vers/certificat.crt
bench set-ssl-key <site> /chemin/absolu/vers/cle.key
bench setup nginx
sudo systemctl reload nginx

Pour un domaine personnalisé, passez les chemins à bench setup add-domain avec --ssl-certificate et --ssl-certificate-key.