SSL-сертификат (TLS-сертификат) – это специальный цифровой файл, который «связывает» сайт с криптографическим ключом и позволяет устанавливать защищённое HTTPS-соединение между сервером и посетителем.
Наличие сертификата необходимо для шифрования данных (например, логинов, паролей, личной информации), даже если на сайте не вводятся особо важные данные. С ним в адресной строке браузера появляется «зелёный замок», обозначающий, что соединение защищено.
Let's Encrypt – это бесплатный автоматизированный открытый центр сертификации (Certificate Authority, CA), созданный некоммерческой организацией ISRG. С помощью Let's Encrypt можно бесплатно получить SSL-сертификат сроком на 90 дней. Для этого нужно подтвердить владение доменом через специальный протокол АСМЕ. Let's Encrypt предлагает готовые инструменты (АСМЕ-клиенты), которые автоматически выполняют выпуск и установку сертификатов без простоя сайта.
Перед получением сертификата убедитесь, что у вас есть всё необходимое:
www-поддомен) корректно указывает на IP вашего VPS через А-запись (и/или АААА для IPv6). Без этой проверки сертификат выпустить нельзя.Чтобы получить сертификат, установим Certbot и плагин под ваш веб-сервер. На примере Debian/Ubuntu и CentOS:
sudo apt update
sudo apt install certbot python3-certbot-apache # для Apache
sudo apt install certbot python3-certbot-nginx # для Nginx
sudo yum install epel-release
sudo yum install certbot certbot-apache # для Apache
sudo yum install certbot certbot-nginx # для Nginx
Certbot и его плагины автоматически добавят в систему сервис (systemd-timer или cron-задачу) для периодической проверки и обновления сертификатов.
После установки Certbot перейдём к получению сертификата. Рассмотрим два основных сценария:
example.com и его www-поддомена:sudo certbot --apache -d example.com -d www.example.com
sudo certbot --nginx -d example.com -d www.example.com
Ключ -d указывает домены, для которых нужен сертификат. Сertbot автоматически найдёт и изменит конфигурацию виртуального хоста (с помощью плагинов --apache или --nginx) и перезапустит веб-сервер для включения TLS.
При первом запуске Certbot попросит указать действующий email и принять условия использования. Рекомендуется использовать реальный email – на него придут уведомления о продлении сертификата и возможных проблемах.
Затем Certbot свяжется с Let's Encrypt, который отправит вашему серверу специальный запрос (НТТР-челлендж) для проверки владения доменом. После успешной проверки Certbot завершит выпуск и предложит варианты настройки:
Please choose whether or not to redirect HTTP traffic to HTTPS...
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Выберите нужный вариант (обычно выбирают Redirect, чтобы все запросы шли по HTTPS). Certbot автоматически допишет в конфиг веб-сервера необходимые директивы для перенаправления с HTTP на HTTPS.
После успешного выпуска Certbot покажет сообщение о сохранённых файлах сертификата:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on YYYY-MM-DD. To obtain a new version of this
certificate in the future, simply run certbot again...
SSL-сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/your-domain/. Теперь при обращении к сайту по адресу https://example.com браузер должен показывать зелёный замок, подтверждающий защищённое соединение.
Сертификаты Let's Encrypt действуют 90 дней, поэтому важно автоматизировать их продление. Certbot по умолчанию настраивает проверку и обновление сертификатов:
sudo systemctl status certbot.timer
sudo crontab -e) и добавьте задачу, например:30 4 * * * /usr/bin/certbot renew --quiet
Для уверенности раз в месяц проверяйте обновление вручную командой:
sudo certbot renew --dry-run
В случае успеха вы увидите сообщение «certbot dry-run was successful». Если в процессе продления возникает ошибка, Let's Encrypt отправит уведомление на указанный email.
Важно: Certbot обновляет сертификаты только если до их окончания осталось < 30 дней. Поэтому его таймер или cron можно запускать хоть ежедневно.
example.com и www.example.com указывают на IP вашего VPS (через А-записи).root или привилегированным пользователем.sudo apt update
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
https://example.com. Замок в адресной строке означает успешную установку.*.example.com), но для них обязательно используется DNS-валидация. При получении wildcard-сертификата Certbot предложит добавить ТХТ-запись в DNS вашего домена. Это полезно, если нужно защитить сразу все поддомены (например, mail.example.com, shop.example.com и т.д.).standalone-режиме (он поднимет временный веб-сервер на порту 80). При этом убедитесь, что к нему нет доступа (остановите другие сервисы на 80) и выполните:
sudo certbot certonly --standalone -d example.com -d www.example.com
После получения сертификат нужно будет вручную прописать в конфиг веб-сервера. Этот способ подходит, если другой вариант невозможен.--webroot, который создаёт файл проверки прямо в корне сайта (обычно .well-known):
sudo certbot certonly --webroot -w /var/www/html -d example.com
/etc/letsencrypt/), чтобы восстановить сертификаты при необходимости.Безлимитные генерации, безусловная скидка 40% на пополнение баланса и доступ к полному функционалу сервиса