Полное руководство: Настройка HTTPS с Let's Encrypt для домена и IP-адреса
В этой статье мы настроим бесплатные SSL-сертификаты от Let's Encrypt для домена (например, example.tech) и рассмотрим альтернативное решение для IP-адреса сервера. Этот метод обеспечит доверенное HTTPS-соединение
1. Подготовка сервера
Требования:
- Сервер с Ubuntu (24.04/22.04)
- Установленный Nginx/Apache
- Доменное имя, привязанное к серверу (A-запись)
- Открытые порты 80 (HTTP) и 443 (HTTPS)
Проверка DNS-записи:
dig A example.tech +short
192.0.2.1 # Ваш IP-адрес
2. Установка Certbot
Certbot — официальный клиент для работы с Let's Encrypt.
Для Nginx:
sudo apt update sudo apt install -y certbot python3-certbot-nginx
Для Apache:
sudo apt install -y certbot python3-certbot-apache
3. Получение SSL-сертификата
3.1. Основная команда:
sudo certbot --nginx -d example.tech
sudo certbot --apache -d example.tech
3.2. Процесс получения:
- Введите email для уведомлений
- Примите условия использования (Y)
- Выберите, хотите ли вы делиться email с EFF (опционально)
- Certbot автоматически настроит веб-сервер
4. Настройка Nginx
Пример ми конфигурации (/etc/nginx/sites-available/default):
server {
listen 443 ssl;
server_name example.tech;
ssl_certificate /etc/letsencrypt/live/example.tech/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.tech/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
root /var/www/example.tech;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name example.tech;
return 301 https://$host$request_uri;
}sudo nginx -t && sudo systemctl reload nginx
5. Автоматическое обновление
Let's Encrypt выпускает сертификаты на 90 дней. Certbot автоматически добавляет задание в cron:
Проверка автообновления:
sudo certbot renew --dry-run
Ручная настройка (если нужно):
sudo crontab -e
0 0 */50 * * certbot renew --quiet --post-hook "systemctl reload nginx"
6. Решение для IP-адреса
Let's Encrypt не поддерживает сертификаты для IP. Альтернативы:
6.1. Самоподписанный сертификат
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/ip.key \ -out /etc/ssl/certs/ip.crt \ -subj "/CN=192.0.2.1"
6.2. Настройка Nginx для IP
server {
listen 443 ssl;
server_name 192.0.2.1;
ssl_certificate /etc/ssl/certs/ip.crt;
ssl_certificate_key /etc/ssl/private/ip.key;
# ... остальные настройки ...
}7. Проверка работы
- Откройте в браузере:
https://example.tech— должен показывать доверенный сертификатhttps://192.0.2.1— будет предупреждение (для IP)- Проверка сертификата:
echo | openssl s_client -connect example.tech:443 2>/dev/null | openssl x509 -noout -dates
8. Плюсы и минусы Let's Encrypt
✅ Преимущества
- Бесплатные доверенные сертификаты
- Автоматическое обновление
- Простая настройка
- Поддержка wildcard-сертификатов
❌ Ограничения
- Не работает с IP-адресами
- Срок действия 90 дней (требует автообновления)
- Лимиты на выпуск сертификатов
Заключение
Let's Encrypt — идеальное решение для быстрого и бесплатного перевода сайтов на HTTPS. Для IP-адресов придется использовать самоподписанные сертификаты или приобретать коммерческие решения. Настроив автоматическое обновление, вы получите постоянное защищенное соединение без лишних хлопот.