Вступ

Let’s Encrypt — центр сертифікації, що надає безкоштовні криптографічні сертифікати X. 509 для TLS-шифрування (HTTPS) строком на 3 місці. В цій публікації ми будемо використовувати Certbot для отримання безкоштовного SSL/TLS сертифіката. Certbot — це безкоштовне програмне забезпечення з відкритим вихідним кодом для автоматичного використання сертифікатів Let’s Encrypt на веб-сайтах, керованих вручну, для активації HTTPS.
В даній публікації ми розглянемо, як створити окрему nginx конфігурацію та отримаєм SSL/TLS сертифікат.

Передумови

Перед початком Вам буде необхідно мати:

  • Сервер Ubuntu 22.04 із встановленим nginx;
  • Зареєстроване доменне ім’я. В даній публікації буде використовуватись умовне ім’я yoursite.com
  • Також DNS записи типу A для yoursite.com та www.yoursite.com, що вказуватиме на публічну  IP-адресу.

Встановлення Certbot

Першим кроком для отримання SSL/TLS сертифіката від Let’s Encrypt буде встановлення certbot на наш сервер, а це можна зробити за допомогою команди:

sudo apt install certbot python3-certbot-nginx -y

Налаштування nginx

Для того щоб виписати сертифікат за допомогою certbot, нам необхідно створити nginx конфігурацію в якій буде директива server_name зі значенням яке відповідає нашому доменному імені.
Давайте створимо конфігурацію для нашого домену, а це можна буде зробити за допомогою команди:

sudo tee /etc/nginx/sites-available/yoursite.com <<EOF
upstream api {
server 127.0.0.1:9000;
}
server {
listen 80;
listen [::]:80;
root /var/www/yoursite.com/html;
index index.html index.htm index.nginx-debian.html;
server_name yoursite.com www.yoursite.com;

location / {
try_files \$uri /index.html;
}
location /api {
rewrite ^/api(/.*)$ \$1 break;
proxy_pass http://api;
}
}
EOF

Ну абож використайте будь який зручний для вас редактор, щоб створити файл /etc/nginx/sites-available/yoursite.com вміст якого буде:

upstream api {
server 127.0.0.1:9000;
}
server {
listen 80;
listen [::]:80;
root /var/www/yoursite.com/html;
index index.html index.htm index.nginx-debian.html;
server_name yoursite.com www.yoursite.com;

location / {
try_files \$uri /index.html;
}
location /api {
rewrite ^/api(/.*)$ \$1 break;
proxy_pass http://api;
}
}

Дана конфігурація, як маленький приклад можливостей nginx. Тут використовуються різноманітні дериктиви як ось upstream, яка служить для того щоб об’єднати сервера в одну групу і балансувати запити між ними, так і proxy_pass щоб передавати запити на наші сервера які описані в upstream.

Отримання SSL/TLS сертифіката

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

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

Це виконується certbot з --nginx плагіном, використовуючи -d для визначення доменних імен, для яких ми хочемо, щоб сертифікат був дійсним.
Якщо ви запускаєте вперше certbot, вам буде запропоновано ввести адресу електронної пошти та погодитися з умовами обслуговування. Після цього certbot він зв’яжеться з сервером Let’s Encrypt, а потім запустить виклик, щоб підтвердити, що ви контролюєте домен, для якого ви запитуєте сертифікат.
Якщо все буде успішно, то certbot запитається, як ви хочете налаштувати параметри HTTPS.
Після того як certbot завантажить та встановить сертифікати ви зможете використовувати https:// у посиланню на ваш сервер. Також ви зможете протестувати ваш сертифікат із допомогою SSL Labs Server Test.

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

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

sudo systemctl status certbot.timer

Щоб перевірити процес оновлення, ви ввести команду:

sudo certbot renew --dry-run

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

Висновок

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

Від ittutorials

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *