Est-il possible de renouveler un certificate pour Apache et les services de messagerie sans les redémarrer?

J’essaie d’obtenir de nouveaux certificates sur mes domaines utilisés sur les services Web et de messagerie.

Pour ce faire, j’utilise Certbot, qui est utilisé comme programme côté client pour se connecter à LetsEncrypt, qui effectue la création de certificates.

Chaque tutoriel que j’ai vu n’identifie aucune méthodologie pour renouveler les certificates sans redémarrer les services Web (comme Apache) ou les services de messagerie.

Est-ce que quelqu’un sait comment faire cela?

La documentation certbot décrit une méthode pour obtenir un certificate sans avoir à redémarrer le serveur Web, en utilisant le plug-in webroot: https://certbot.eff.org/docs/using.html#webroot

Pour résumer, vous devez transmettre quelques arguments supplémentaires à la commande certbot pour votre renouvellement: certonly , --webroot et --webroot-path ou -w . Donc, la commande complète ressemblerait à ceci:

 certbot renew certonly --webroot -w /var/www/example/ -d www.example.com 

Selon les documents:

Le plug-in webroot fonctionne en créant un fichier temporaire pour chacun des domaines demandés dans $ {webroot-path} /. Well-connues / acme-challenge. Ensuite, le serveur de validation Let ‘s Encrypt effectue des requêtes HTTP pour valider que le DNS de chaque domaine demandé est résolu sur le serveur exécutant certbot.

Cela permet à Let Encrypt d’effectuer la vérification du domaine sans arrêter Apache de se connecter au port 80, 443, etc.

Pour Apache 2.4: “apachectl graceful” (alias “reload”) recharge les certificates pour moi (testé avec Ubuntu 16.04 en utilisant 2.4.18-2ubuntu3). L’avertissement: sur le Web, beaucoup d’informations indiquent qu’Apache nécessite un redémarrage complet au lieu d’un rechargement pour accepter de nouveaux certificates. Étant donné que pour moi, un rechargement en douceur était suffisant, je dirais qu’il est possible, peut-être même probable, que pour les anciennes versions d’Apache, plus d’un rechargement était nécessaire une fois?

Vous pouvez créer un script qui effectue d’abord le renouvellement du certbot, puis apachectl gracieusement. Ou juste 2 cronjobs, où l’apachectl gracieux se produit après le cronjob de certbot.

Ce problème n’est pas aussi grave que si IMHO: Letsencrypt renouvellera les certificates jusqu’à 30 jours avant l’expiration. Personnellement, je redémarre plus souvent mes serveurs, car mon autundater ubuntu exécuté chaque semaine est configuré dans “/etc/apt/apt.conf.d/50unattended-upgrades” avec “Unattended-Upgrade :: Automatic-Reboot” true “;” et la probabilité qu’il n’ait pas de mise à jour qui le fasse vouloir redémarrer pendant 30 jours est plutôt faible.

Si vous ne voulez pas de redémarrage, vous devrez vérifier vos autres services (postfix, dovecot si vous avez également du courrier sur le serveur) sur ce qu’ils doivent accepter d’un nouveau certificate, puis l’append à votre script qui démarre. “certbot renew”.

Certbot a une commande intégrée pour renouveler tous vos certificates:

 certbot renew certonly --webroot -w /var/www/example/ -d www.example.com 

Si vous souhaitez simplement recharger la configuration après avoir créé un cert, lancez simplement sudo service nginx reload ou sudo service apache2 reload . Cela rechargera la configuration sans redémarrer (donc sans temps d’arrêt) de votre site Web.

J’utilise cette méthode pour renouveler automatiquement le certificate SSL de mon Let Encs via cronjob, mais cela fonctionnera également pour certbot. Pour plus de détails, voir Renouveler automatiquement le certificate SSL de Let ‘Encrypt