Devo riavviare Nginx se rinnovo i miei certificati di sicurezza?


33

Quindi sto configurando un server nginx con SSL abilitato con una definizione del server simile a:

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;

    ...
}

Ti viene l'idea (ti prego di perdonare eventuali errori di battitura).

Comunque, quello che mi chiedo è; se rinnovo i miei certificati, c'è un modo per installarli senza dover riavviare nginx?

Ad esempio, se dovessi utilizzare i collegamenti simbolici da /path/to/public/certificatee /path/to/private/key, indicando i miei certificati attuali, avrei ancora bisogno di riavviare nginxse dovessi semplicemente cambiarli per puntare a nuovi (rinnovati) certificati? Ci sono alternative?

Risposte:


26

Sì, sono abbastanza sicuro che dovrai ricaricare Nginx affinché i certificati rinnovati visualizzino la data di scadenza corretta, ma una semplice svuotamento della cache e la navigazione dovrebbero consentirti di visualizzarlo.

O se preferisci cli, puoi sempre usare il vecchio fidato comando OpenSSL:

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

Ciò ti darebbe le date attuali sul certificato. Nel tuo caso la porta sarebbe 80 invece di 443.

Molte volte nginx -s reloadnon funziona come previsto. Su molti sistemi (Debian, ecc.), Dovresti usare /etc/init.d/nginx reload.

Puoi sempre specificare direttamente il file di configurazione se tutto il resto fallisce, entro nginx -c /path/to/nginx.conf.


Spiacenti, quegli ascoltatori avrebbero dovuto essere per la porta 443, mio ​​male! Comunque, grazie per l'ottima risposta!
Haravikk,

8
nginx reloade riavviare Nginx sono due cose diverse: reloadnon riavvia Nginx ma invia solo il segnale SIGHUP. Il segnale SIGHUP è abbastanza?
Porton,

11
Sì. L'invio di un SIGHUP farà sì che nginx passi al certificato aggiornato.
velocità

Qual è la funzione di echo |nel tuo comando? Se lo lascio fuori, non ricevo una richiesta di risposta. Vorrei greppare l'output per notAftere poi confrontarlo con la data corrente, per spammare me stesso un paio di giorni prima della scadenza del certificato.
Amedee Van Gasse,

@AmedeeVanGasse il echopipe fa semplicemente in modo che la shell OpenSSL ritorni in modo pulito su Bash e restituisca l'output normalmente. Ciò è necessario per consentire l'uscita pulita per l'uso negli script e per scopi di automazione come sembra che tu stia pianificando. Ho implementato numerosi script come quello che stai pianificando utilizzando la stessa funzionalità di base.
rubynorails

21

Alla ricezione di SIGHUPnginx ricaricherà la configurazione aggiornata, la verificherà durante l'apertura dei file di registro e la lettura dei certificati SSL , quindi arresterà con grazia i processi di lavoro facendo affidamento sulla configurazione precedente.

Se succede che nginx non è in grado di leggere alcuni certificati SSL, continuerò a utilizzare la configurazione precedente. Altrimenti, continuerà a funzionare ed elaborare le richieste indipendentemente da ciò che hai fatto ai tuoi file di configurazione. Anche se sono rotti, i tuoi siti web si apriranno comunque.

Quindi sì, non è necessario riavviare nginx e rischiare di mettere il server offline per più di qualche secondo se si desidera che nginx visualizzi i certificati aggiornati. Dovrebbe essere sufficiente per:

sudo service nginx reload

Nella maggior parte delle distribuzioni correnti con systemd utilizzato per impostazione predefinita, è anche possibile ricaricare nginx con il seguente comando:

sudo systemctl reload nginx

3
Su Ubuntu 16 , CentOS 7 e altri sistemi che systemdti supportano possono anche essere eseguiti sudo systemctl reload nginx(di cui sudo service nginx reloadsopra è aliasato).
Ville

@Ville hai ragione, ma questo è un altro comando da ricordare; e non c'è sistema ovunque
sanmai

Adoro fare service nginx restart. Non mi stanco mai di vedere quanto velocemente si completa. Tuttavia, se si trova in un lavoro cron e non vedrò nulla di tutto ciò, preferirei fare una sorta di ricarica per evitare di interrompere qualsiasi tipo di sessione persistente o operazioni in sospeso che potrebbero essere in corso.
Rolf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.