Установка Let's Encrypt на сервер Nginx

2024-05-01 10:14
77
Ця стаття на мовах: UA / RU

Стаття у розділах:

Сервера Загальна інформація

Зміст

Для установки Let's Encrypt на сервере Nginx вам понадобится следующее:

Сервер с установленным Nginx: У вас должен быть сервер с установленным и настроенным сервером Nginx. Также на сервере должен быть запущен проект, доступный по HTTP.

Зарегистрированное доменное имя: Вам нужно иметь доменное имя, например, pc-info.com.ua. Его можно приобрести в доменных регистрационных службах или получить бесплатно в некоторых доменных зонах, например, pp.ua. Желательно подобрать домен таким образом, чтобы он отражал название вашей компании и был легко запоминающимся.

DNS настройки: На сервере DNS вам нужно настроить два A-записи для вашего домена example.com и www.example.com, которые ведут на публичный IP-адрес вашего сервера. Это позволит Let's Encrypt провести проверку владения вашим доменом.

Серверный блок для вашего домена в конфигурации Nginx: Убедитесь, что у вас есть серверный блок (server block), настроенный для вашего домена в конфигурации Nginx. Например, /etc/nginx/sites-available/pc-info.com.ua.conf.

После этого вы сможете использовать Certbot или другие инструменты для автоматизированного получения и настройки сертификатов Let's Encrypt на вашем сервере Nginx.

Установка CertBot

Установка Certbot:

sudo apt install certbot python3-certbot-nginx

Certbot готов к использованию. Однак для автоматической настройки SSL для Nginx нам нужно проверить некоторые параметры Nginx.

Проверка конфигурации Nginx

Certbot должен иметь возможность найти правильный блок сервера в вашей конфигурации Nginx, чтобы автоматически настроить SSL. Это делается путем поиска директивы server_name, которая соответствует домену, для которого вы запрашиваете сертификат.

Если вы следовали инструкциям по настройке серверного блока в руководстве по установке Nginx, у вас должен быть блок сервера для вашего домена с уже установленной директивой server_name.

Чтобы проверить, откройте файл конфигурации для вашего домена с помощью Nano или вашего любимого текстового редактора:

sudo nano /etc/nginx/sites-available/example.com.conf

Найдите существующую строку server_name. Она должна выглядеть примерно так:

...

server_name example.com www.example.com;

...

Если это так, выйдите из редактора и перейдите к следующему шагу.

Если нет, обновите его соответственно. Затем сохраните файл, закройте редактор и проверьте синтаксис изменений конфигурации:

sudo nginx -t

Если вы получаете ошибку, снова откройте файл блока сервера и проверьте, нет ли ошибок или пропущенных символов. Когда синтаксис файла конфигурации правильный, перезагрузите Nginx, чтобы загрузить новую конфигурацию:

sudo systemctl reload nginx

Тепер Certbot может найти правильный блок сервера и автоматически обновить его.

Разрешение HTTPS через брандмауер

Если у вас включен брандмауэр ufw, как рекомендуется в руководствах по установке, вам нужно будет настроить параметры, чтобы разрешить трафик HTTPS. К счастью, Nginx регистрирует несколько профилей после установки ufw.

Вы можете просмотреть текущие настройки, введя:

sudo ufw status

Вероятно, это будет выглядеть так, что разрешен только HTTP-трафик к веб-серверу:

Чтобы дополнительно разрешить трафик HTTPS, разрешите полный профиль Nginx и удалите избыточное разрешение профиля Nginx HTTP:

sudo ufw allow 'Nginx Full'

sudo ufw delete allow 'Nginx HTTP'

Тепер ваш статус должен выглядеть так:

sudo ufw status

Далее запустим Certbot и получим наши сертификаты.

Получение SSL-сертификата

Certbot предоставляет различные способы получения SSL-сертификатов с помощью плагинов. Плагин Nginx заботится о перенастройке Nginx и перезагрузке конфигурации, когда это необходимо. Чтобы использовать этот плагин, введите следующее:

sudo certbot --nginx -d example.com -d www.example.com

Это запускает Certbot с плагином --nginx, используя -d для определения доменных имен, для которых мы хотим, чтобы сертификат был действителен.

Если вы запускаете Certbot впервые, вам будет предложено ввести адрес электронной почты и согласиться с условиями обслуживания. Затем Certbot свяжется с сервером Let’s Encrypt, а затем запустит вызов, чтобы подтвердить, что вы контролируете домен, для которого вы запрашиваете сертификат.

Если это будет успешно, Certbot предложит выбрать способ настройки параметров HTTPS.

Выберите свой вариант и нажмите ENTER. Конфигурация будет обновлена, и Nginx перезагрузится, чтобы получить новые настройки. Certbot завершится сообщением о том, что процесс был успешным и где хранятся ваши сертификаты.

Ваши сертификаты загружены, установлены и загружены. Попробуйте перезагрузить веб-сайт через https:// и обратите внимание на индикатор безопасности вашего браузера. Он должен указывать на то, что сайт должным образом защищен, обычно с замком. Если вы протестируете свой сервер с помощью SSL Labs Server Test, он получит оценку A.

Давайте завершим тестированием процесса обновления.

Перевірка автоматичного оновлення Certbot

Сертифікати Let's Encrypt дійсні лише 90 днів. Це призначено для того, щоб стимулювати користувачів автоматизувати процес оновлення сертифікатів. Пакет certbot, який ми встановили, подбає про це за нас, додавши таймер systemd, який запускатиметься двічі на день і автоматично оновлюватиме будь-який сертифікат, термін дії якого закінчиться протягом 30 днів.

Ви можете запитати статус таймера за допомогою systemctl:

sudo systemctl status certbot.timer

Щоб перевірити процес оновлення, ви можете виконати сухий запуск за допомогою certbot:

sudo certbot renew --dry-run

Якщо ви не бачите помилок, все готово. Потрібен Certbot оновить ваші сертифікати та перезавантажити Nginx, щоб отримати зміни. Якщо автоматичний процес оновлення не вдасться, Let's Encrypt надішле повідомлення на вказану вами електронну пошту з попередженням про закінчення терміну дії вашого сертифіката.

Висновок

У цьому посібнику ви встановили клієнт Let's Encrypt certbot, завантажили SSL-сертифікати для свого домену, налаштували Nginx на використання цих сертифікатів і налаштували автоматичне оновлення сертифіката. Якщо у вас виникли запитання щодо використання Certbot, скористайтеся офіційною документацією.


Сподобалась стаття? Читайте нас в телеграм