Чи потрібно мені перезавантажувати Nginx, якщо я поновлюю свій сертифікат безпеки?


33

Тож я налаштовую сервер nginx із включеним SSL із визначенням сервера приблизно так:

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;

    ...
}

Ви отримуєте ідею (пробачте про помилки).

У всякому разі, що мені цікаво; якщо я поновлю свої сертифікати, чи є спосіб їх встановити без необхідності перезавантажувати nginx?

Наприклад, якби я використовував символічні посилання з /path/to/public/certificateі /path/to/private/key, вказуючи на свої поточні сертифікати, мені все-таки потрібно перезапустити, nginxякби я просто змінив їх, щоб вказати на нові (оновлені) сертифікати? Чи є альтернативи?

Відповіді:


26

Так, я впевнений, що вам потрібно буде перезавантажити Nginx, щоб оновлені сертифікати відображали правильну дату закінчення терміну придатності, але просте очищення кешу та перегляд повинно дозволяти вам переглянути це.

Або якщо ви віддаєте перевагу cli, ви завжди можете використовувати стару надійну команду OpenSSL:

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

Це дасть вам поточні дати у сертифікаті. У вашому випадку порт буде 80, а не 443.

Багато разів nginx -s reloadне працює, як очікувалося. У багатьох системах (Debian тощо) вам потрібно було б користуватися /etc/init.d/nginx reload.

Ви завжди можете вказати файл конфігурації безпосередньо, якщо все інше не вдалося, до nginx -c /path/to/nginx.conf.


Ну, це слухання повинно було бути для порту 443, мій поганий! У будь-якому випадку, дякую за чудову відповідь!
Харавік

8
nginx reloadі перезапуск Nginx - це дві різні речі: reloadне перезапускає Nginx, а лише надсилає йому сигнал SIGHUP. Чи достатньо сигналу SIGHUP?
портон

11
Так. Якщо надіслати SIGHUP, nginx перейде до оновленого сертифіката.
rspeed

Яка функція echo |у вашій команді? Якщо я залишу це, я не отримаю швидкого повернення. Я хотів би привітати результат notAfterі порівняти його з поточною датою, щоб спамувати себе за пару днів до того, як термін закінчиться.
Амедей Ван Гассе

@AmedeeVanGasse echoтруба просто змушує вихід оболонки OpenSSL чисто повернутись до Bash і повернути вихід як нормальний. Це необхідно для чистого виходу для використання в сценаріях та для автоматизації, як це звучить так, як ви плануєте. Я реалізував численні сценарії, як той, який ви плануєте, використовуючи той самий базовий функціонал.
rubynorails

21

Після отримання SIGHUPnginx перезавантажить оновлену конфігурацію, перевірить її під час відкриття файлів журналів та читання сертифікатів SSL , а потім витончено закриє робочі процеси, спираючись на попередню конфігурацію.

Якщо так станеться, що nginx не може прочитати деякі сертифікати SSL, я продовжуватиму працювати, використовуючи старіші конфігурації. Інакше кажучи, він буде продовжувати функціонувати та обробляти запити незалежно від того, що ви робили зі своїми конфігураційними файлами. Навіть якщо вони порушені, ваші веб-сайти все одно відкриються.

Так що так, вам не доведеться перезавантажувати nginx і ризикувати вимкнути ваш сервер в автономному режимі більше ніж кілька секунд, якщо ви хочете, щоб nginx бачив оновлені серти. Його має бути достатньо для:

sudo service nginx reload

У більшості поточних дистрибутивів з systemd, використовуваними за замовчуванням, ви також можете перезавантажити nginx за допомогою наступної команди:

sudo systemctl reload nginx

3
На Ubuntu 16 , CentOS 7 та інших системах, що підтримують, systemdви також можете виконати sudo systemctl reload nginx(про що sudo service nginx reloadзгадувалося вище).
Віль

@Ville ти маєш рацію, але це ще одна команда запам'ятати; і чи не скрізь там
системно

Я люблю робити service nginx restart. Я ніколи не втомлююся бачити, як швидко це завершується. Однак якщо він знаходиться в роботі з системою cron, і я не бачу жодної з них, я б краще зробити якесь перезавантаження, щоб уникнути порушення будь-якого стійкого сеансу чи очікуваної операції, яка може тривати.
Рольф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.