web-dev-qa-db-fra.com

Dois-je redémarrer Nginx si je renouvelle mon ou mes certificats de sécurité?

Je configure donc un serveur nginx avec SSL activé avec une définition de serveur comme:

server {
    listen :80;
    listen [::]:80;
    server_name example.org;
    root /foo/bar;

    ssl on;
    ssl_certificate /path/to/public/certificate;
    ssl_certificate_key /path/to/private/key;

    ...
}

Vous avez l'idée (veuillez pardonner toutes les fautes de frappe).

Quoi qu'il en soit, ce que je me demande, c'est; si je renouvelle mes certificats, existe-t-il un moyen de les installer sans avoir à redémarrer nginx?

Par exemple, si je devais utiliser des liens symboliques de /path/to/public/certificate et /path/to/private/key, pointant vers mes certificats actuels, aurais-je encore besoin de redémarrer nginx si je devais simplement les changer pour pointer vers de nouveaux certificats (renouvelés)? Existe-t-il des alternatives?

36
Haravikk

Oui, je suis presque sûr que vous devrez recharger Nginx pour que les certificats renouvelés affichent la date d'expiration correcte, mais un simple effacement du cache et une navigation devraient vous permettre de voir cela.

Ou si vous préférez cli, vous pouvez toujours utiliser l'ancienne commande Trusty OpenSSL:

echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates

Cela vous donnerait les dates actuelles sur le certificat. Dans votre cas, le port serait de 80 au lieu de 443.

À plusieurs reprises nginx -s reload ne fonctionne pas comme prévu. Sur de nombreux systèmes (Debian, etc.), vous devez utiliser /etc/init.d/nginx reload.

Vous pouvez toujours spécifier le fichier de configuration directement si tout le reste échoue, par nginx -c /path/to/nginx.conf.

28
rubynorails

Lors de la réception de SIGHUP nginx rechargera la configuration mise à jour, vérifiez-la lors de l'ouverture des fichiers journaux et de la lecture des certificats SSL , puis arrêtez les processus de travail en fonction de la configuration précédente.

S'il arrive que nginx ne puisse pas lire certains certificats SSL, je continuerai à utiliser l'ancienne configuration. Sinon, il continuera de fonctionner et de traiter les demandes, peu importe ce que vous avez fait à vos fichiers de configuration. Même s'ils sont cassés, vos sites Web resteront ouverts.

Alors oui, vous n'avez pas à redémarrer nginx et risquez de mettre votre serveur hors ligne pendant plus de quelques secondes si vous voulez que nginx voie les mises à jour des certificats. Il devrait suffire:

Sudo service nginx reload

Dans la plupart des distributions actuelles avec systemd utilisé par défaut, vous pouvez également recharger nginx avec la commande suivante:

Sudo systemctl reload nginx
23
sanmai