Preciso reiniciar o Nginx se eu renovar meu (s) certificado (s) de segurança?

24

Estou configurando um servidor nginx com SSL ativado com uma definição de servidor como:

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;

    ...
}

Você tem a ideia (por favor, perdoe qualquer erro de digitação).

Enfim, o que eu estou querendo saber é; se eu renovar meu (s) certificado (s), existe uma maneira de instalá-los sem ter que reiniciar o nginx?

Por exemplo, se eu usasse links simbólicos de /path/to/public/certificate e /path/to/private/key , apontando para meu (s) certificado (s) atual (s), eu ainda precisaria reiniciar nginx se eu fosse simplesmente alterá-los para apontar para certificados novos (renovados)? Existem alternativas?

    
por Haravikk 04.12.2015 / 20:16

2 respostas

20

Sim, tenho certeza que você precisaria recarregar o Nginx para que os certificados renovados exibam a data de validade correta, mas uma simples limpeza de cache e navegação devem permitir que você visualize isso.

Ou se você preferir o cli, você sempre pode usar o antigo e confiável comando OpenSSL:

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

Isso fornecerá as datas atuais no certificado. No seu caso, a porta seria 80 em vez de 443.

Muitas vezes nginx -s reload não funciona como esperado. Em muitos sistemas (Debian, etc.), você precisaria usar /etc/init.d/nginx reload .

Você sempre pode especificar o arquivo de configuração diretamente se tudo o mais falhar, por nginx -c /path/to/nginx.conf .

    
por 04.12.2015 / 23:44
18

Ao receber SIGHUP nginx irá recarregar a configuração atualizada, verificá-lo ao abrir arquivos de log e ler certificados SSL e, em seguida, desligar corretamente os processos de trabalho com base na configuração anterior.

Se acontecer que o nginx não possa ler alguns certificados SSL, continuarei a usar a configuração mais antiga. Caso contrário, ele continuará funcionando e processando as solicitações, independentemente do que você fez com seus arquivos de configuração. Mesmo que eles estejam corrompidos, seus sites ainda serão abertos.

Portanto, sim, você não precisa reiniciar o nginx e corre o risco de colocar o seu servidor offline por mais do que apenas alguns segundos, se quiser que o nginx veja certificados atualizados. Deve ser o suficiente para:

sudo service nginx reload

Na maioria das distribuições atuais com o systemd usado por padrão, você também pode recarregar o nginx com o seguinte comando:

sudo systemctl reload nginx
    
por 29.12.2016 / 17:40