Встановити Let's Encrypt на сервері Nginx

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

t.me


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

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

Зміст

Для встановлення Let's Encrypt на сервері Nginx вам знадобиться наступне:

Сервер з встановленим Nginx: Маєте Ubuntu або CentOS з встановленим та налаштованим 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

Першим кроком до використання Let's Encrypt для отримання сертифіката SSL є встановлення програмного забезпечення Certbot на вашому сервері.

Встановіть Certbot і його плагін Nginx за допомогою apt:

sudo apt install certbot python3-certbot-nginx

Тепер Certbot готовий до використання, але щоб він міг автоматично налаштувати SSL для Nginx, нам потрібно перевірити деякі параметри Nginx.

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

Certbot повинен мати можливість знайти правильний server блок у вашій конфігурації Nginx, щоб він міг автоматично налаштувати SSL. Зокрема, це робиться шляхом пошуку server_name директиви, яка відповідає домену, для якого ви запитуєте сертифікат.

Якщо ви дотримувалися кроку налаштування блоку сервера в посібнику з інсталяції Nginx , у вас повинен бути блок сервера для вашого домену з уже встановленою директивою./etc/nginx/sites-available/example.comserver_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 може знайти правильний serverблок і автоматично його оновити.

Далі оновимо брандмауер, щоб дозволити трафік HTTPS.

Дозвіл HTTPS через брандмауер

Якщо у вас ufwувімкнено брандмауер, як рекомендовано в посібниках з попередніх умов, вам потрібно буде налаштувати параметри, щоб дозволити трафік HTTPS. На щастя, Nginx реєструє кілька профілів після ufwвстановлення.

Ви можете переглянути поточні налаштування, ввівши:

sudo ufw status

Ймовірно, це виглядатиме так, тобто лише HTTP-трафік дозволений до веб-сервера:

Щоб додатково дозволити трафік HTTPS, дозвольте повний профіль Nginx і видаліть надлишковий дозвіл профілю HTTP Nginx:

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 дійсні лише дев'яносто днів. Це має на меті спонукати користувачів автоматизувати процес поновлення сертифікатів. Пакет certbot, який ми встановили, подбає про це за нас, додавши таймер systemd, який запускатиметься двічі на день і автоматично поновлюватиме будь-який сертифікат, термін дії якого закінчиться протягом тридцяти днів.

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

sudo systemctl status certbot.timer

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

sudo certbot renew --dry-run

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

Висновок

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


Сподобалась стаття? Подякуйте автору