Let's Encrypt — бесплатный и автоматизированный центр сертификации, который позволяет быстро настроить защищённый HTTPS на сервере Ubuntu 20.04 с Nginx. В этом руководстве — пошаговая установка certbot, настройка Nginx, получение сертификатов и их автоматическое обновление.
Установка Let's Encrypt на Ubuntu 20.04
Установка Certbot
Обновляем пакеты и устанавливаем certbot:
sudo apt update
sudo apt install certbot
Создание параметров Диффи-Хеллмана
Для безопасности создадим 2048-битные параметры DH:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Генерация может занять несколько минут.
Настройка Nginx для проверки Let's Encrypt
Для получения сертификатов через плагин webroot создаём каталог для проверки:
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp www-data /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Создаём сниппет для Nginx, чтобы направлять запросы к /.well-known/acme-challenge/:
sudo nano /etc/nginx/snippets/letsencrypt.conf
Вставляем:
location ^~ /.well-known/acme-challenge/ {
allow all;
root /var/lib/letsencrypt/;
default_type "text/plain";
try_files $uri =404;
}
Создаём сниппет для безопасного SSL с современными настройками:
sudo nano /etc/nginx/snippets/ssl.conf
Вставляем:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
Конфигурация Nginx для домена
Создаём файл конфигурации для сайта:
sudo nano /etc/nginx/sites-available/example.com.conf
Вставляем:
server {
listen 80;
server_name example.com www.example.com;
include snippets/letsencrypt.conf;
}
Активируем сайт:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Получение SSL-сертификата
Запускаем certbot с использованием плагина webroot:
sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Настройка HTTPS и редиректов
Редактируем конфигурацию сайта, чтобы настроить HTTPS и редиректы:
sudo nano /etc/nginx/sites-available/example.com.conf
Вставляем:
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# . . . other code for your site
}
Перезагружаем Nginx:
sudo systemctl reload nginx
Проверь, что сайт доступен по HTTPS с зеленым замком.
Автоматическое обновление сертификатов
Let's Encrypt действует 90 дней. Certbot устанавливает системный таймер для обновления, но нужно перезагружать nginx после обновления.
В файл /etc/letsencrypt/cli.ini:
sudo nano /etc/letsencrypt/cli.ini
Добавь строку:
deploy-hook = systemctl reload nginx
Проверим работу обновления:
sudo certbot renew --dry-run
Если ошибок нет — автоматическое обновление работает корректно.
Вот и всё. Теперь сайт под защитой SSL с Let's Encrypt и Nginx на Ubuntu 20.04, и сертификаты обновляются автоматически.
0 комментариев