Установка и настройка Certbot (Let's Encrypt) для Nginx на Ubuntu
1. Установка необходимых пакетов
Перед началом убедитесь, что у вас установлен Nginx и обновлены все пакеты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx
Теперь установим Certbot и плагин для Nginx:
sudo apt install -y certbot python3-certbot-nginx
2. Настройка брандмауэра
Разрешите трафик для Nginx и HTTPS:
sudo ufw allow 22
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status
3. Создание конфигурации Nginx
Создайте или отредактируйте файл конфигурации Nginx для вашего домена:
sudo nano /etc/nginx/sites-available/example.com
Добавьте следующую конфигурацию:
server {
listen 80;
server_name example.com www.example.com;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root /var/www/html;
index index.html index.htm;
}
}
Активируйте сайт:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Проверьте конфигурацию и перезапустите Nginx:
sudo nginx -t
sudo systemctl restart nginx
4. Получение SSL-сертификата от Let's Encrypt
Запустите команду для автоматической настройки SSL-сертификата с помощью Certbot:
sudo certbot --nginx -d example.com -d www.example.com
Замените example.com
на ваш реальный домен.
В процессе вас попросят:
- Ввести ваш email.
- Принять условия обслуживания Let's Encrypt.
- Выбрать перенаправление HTTP в HTTPS (рекомендуется).
После успешной установки сертификата Certbot автоматически обновит конфигурацию Nginx.
5. Проверка SSL-конфигурации
Проверьте, что конфигурация Nginx корректна:
sudo nginx -t
Перезапустите Nginx, чтобы применить изменения:
sudo systemctl restart nginx
6. Автоматическое продление сертификата
Let's Encrypt сертификаты действительны 90 дней. Certbot автоматически настраивает таймер для продления сертификатов. Вы можете проверить его с помощью:
sudo systemctl status certbot.timer
Для тестирования продления сертификата вручную выполните:
sudo certbot renew --dry-run
7. Настройка автоматического продления (если необходимо вручную)
Откройте crontab для редактирования:
sudo crontab -e
Добавьте следующую строку для автоматического продления сертификатов:
0 3 * * * certbot renew --quiet && systemctl reload nginx
Это задание будет выполняться каждый день в 03:00 и продлевать сертификаты при необходимости.
8. Проверка установленного SSL-сертификата
Вы можете проверить SSL-сертификат с помощью команды:
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates
Либо используйте SSL Labs для более детального анализа.
9. Откат и удаление сертификата (если нужно)
Если вам нужно удалить сертификат, выполните:
sudo certbot delete --cert-name example.com
После удаления обновите конфигурацию Nginx:
sudo systemctl restart nginx
Теперь ваш сервер работает с безопасным HTTPS-соединением, и сертификаты автоматически обновляются! 🚀