Установка SSL/TLS сертификата: Руководство Let's Encrypt
Установка бесплатного SSL/TLS сертификата с Let's Encrypt и Certbot для Nginx и Apache. Автоматическое обновление, настройка HTTPS и устранение распространённых ошибок.
Содержание
Установка SSL/TLS сертификата: Руководство Let's Encrypt
SSL/TLS сертификаты шифруют соединение между вашим веб-сервером и посетителями. HTTPS сегодня необходим для SEO-рейтинга, доверия браузеров и безопасности пользователей. Let's Encrypt предоставляет бесплатные, автоматизированные и открытые сертификаты.
Что такое SSL/TLS?
SSL (Secure Sockets Layer) и его современный преемник TLS (Transport Layer Security) — криптографические протоколы для защиты данных в сети. При использовании HTTPS:
- Данные шифруются при передаче (конфиденциальность)
- Идентификация сервера проверяется (аутентификация)
- Данные не могут быть изменены (целостность)
Современные браузеры помечают HTTP-сайты как «Небезопасные». Google использует HTTPS как фактор ранжирования. На серверах REXE установка SSL бесплатна и проста.
Установка Certbot
Certbot — официальный инструмент для автоматического получения и обновления сертификатов Let's Encrypt.
Debian/Ubuntu
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка Certbot с плагином Nginx
sudo apt install certbot python3-certbot-nginx -y
# Для Apache
sudo apt install certbot python3-certbot-apache -y
RHEL/CentOS/AlmaLinux
# Добавление репозитория EPEL
sudo dnf install epel-release -y
# Установка Certbot
sudo dnf install certbot python3-certbot-nginx -y
Установка через Snap (Рекомендуется)
# Установка snapd
sudo apt install snapd -y
# Установка Certbot через snap
sudo snap install --classic certbot
# Создание символической ссылки
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Проверка версии
certbot --version
Получение SSL сертификата для Nginx
Предварительные требования
Перед получением сертификата:
- Ваш домен должен указывать на IP-адрес сервера
- Порты 80 и 443 должны быть открыты
- Nginx должен работать
# Проверка разрешения домена
nslookup example.com
# Проверка состояния брандмауэра
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Автоматическая настройка Nginx
# Получить сертификат и автоматически настроить Nginx
sudo certbot --nginx -d example.com -d www.example.com
# Только получить сертификат (ручная настройка)
sudo certbot certonly --nginx -d example.com -d www.example.com
# Wildcard сертификат (требует DNS-проверку)
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
Ручная настройка SSL в Nginx
# Перенаправление HTTP на HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# Блок HTTPS сервера
server {
listen 443 ssl http2;
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;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=15768000" always;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# Проверка конфигурации
sudo nginx -t
# Перезагрузка Nginx
sudo systemctl reload nginx
Получение SSL сертификата для Apache
# Включение модуля SSL
sudo a2enmod ssl
sudo a2enmod rewrite
# Получение сертификата с плагином Apache
sudo certbot --apache -d example.com -d www.example.com
Ручная настройка SSL в Apache
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
Автоматическое обновление
Сертификаты Let's Encrypt действительны 90 дней. Certbot настраивает systemd timer или cron job для автоматического обновления.
# Тест автоматического обновления
sudo certbot renew --dry-run
# Проверка статуса таймера
sudo systemctl status certbot.timer
# Ручное обновление
sudo certbot renew
# Перезагрузка Nginx после обновления
sudo certbot renew --post-hook "systemctl reload nginx"
Обновление через Cron
# Редактирование crontab
sudo crontab -e
# Проверка дважды в день
0 0,12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
Проверка статуса сертификата
# Список всех сертификатов
sudo certbot certificates
# Проверка даты истечения
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
Устранение неполадок
Порт 80 заблокирован
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl status nginx
Ошибка разрешения домена
nslookup example.com 8.8.8.8
dig example.com +short
curl -4 ifconfig.me
Let's Encrypt применяет ограничения: 5 неудачных попыток в час. Используйте флаг --staging для тестирования.
# Тестовая среда (без ограничений)
sudo certbot --nginx --staging -d example.com
Заключение
С Let's Encrypt и Certbot установка SSL/TLS сертификата занимает всего несколько минут. Автоматическое обновление устраняет беспокойство об истечении срока действия. Использование HTTPS на серверах REXE критически важно как для безопасности, так и для SEO.
Связанные статьи
Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Подключение к Windows VDS по RDP: полное руководство
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена ОС VDS-сервера: пошаговое руководство (Reinstall)
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.