Бесплатный SSL для сайта (Let's Encrypt)
HTTPS давно перестал быть опцией: без него браузеры пугают посетителей, поисковики понижают позиции, а платёжные шлюзы не подключаются. Хорошая новость — валидный SSL можно получить бесплатно за пару минут через Let's Encrypt и certbot.
Содержание
Что такое Let's Encrypt
["Let's Encrypt — некоммерческий центр сертификации, выдающий SSL бесплатно и автоматически. Сертификаты доверяются всеми браузерами так же, как платные. Разница лишь в сроке: сертификат живёт 90 дней и продлевается автоматически.", 'Управляет всем утилита certbot: она проходит проверку владения доменом, получает сертификат и сама правит конфиг nginx. От вас — одна команда. Работает на любом VPS с root-доступом, включая тарифы MAATRIX.', "Чем платный сертификат отличается от бесплатного? Уровнем проверки. Let's Encrypt подтверждает только владение доменом (DV-сертификат) — этого достаточно подавляющему большинству сайтов: блогам, магазинам, лендингам, корпоративным страницам. Платные OV/EV-сертификаты дополнительно проверяют организацию и нужны разве что банкам и крупным брендам. Шифрование при этом одинаковое — замочек в браузере ничем не отличается."]Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с бесплатным SSLУсловие: домен указывает на сервер
["Перед выпуском убедитесь, что A-запись домена уже ведёт на IP вашего VPS — Let's Encrypt проверяет владение, обращаясь к сайту по домену:", 'dig +short example.com A # должен вернуть IP вашего сервера', 'Если IP ещё не тот — дождитесь обновления DNS. Иначе выпуск завершится ошибкой проверки.']
Установка certbot и выпуск
['Ставим certbot с плагином для nginx и выпускаем сертификат одной командой:', 'apt update && apt install -y certbot python3-certbot-nginx\ncertbot --nginx -d example.com -d www.example.com', 'Certbot спросит e-mail (для уведомлений о продлении), предложит включить редирект с HTTP на HTTPS — соглашайтесь. Через несколько секунд сайт работает по HTTPS с валидным замочком.', 'Плагин --nginx хорош тем, что сам находит нужный server-блок по имени домена и дописывает в него строки ssl_certificate, listen 443 ssl и редирект. Вам не нужно править конфиг руками. Если же вы используете нестандартный веб-сервер или хотите получить только сертификат без правки конфигов, используйте режим certbot certonly — файлы лягут в /etc/letsencrypt/live/домен/, а подключите вы их сами.']
Автопродление
['Сертификат на 90 дней — но продление автоматическое. Пакет certbot ставит системный таймер, который дважды в день проверяет сроки и обновляет сертификаты за 30 дней до истечения. Проверить:', 'systemctl list-timers | grep certbot\ncertbot renew --dry-run', 'Команда --dry-run имитирует продление без реального запроса — если она прошла без ошибок, автопродление настроено верно и о сроках можно забыть.', "На всякий случай при выпуске вы указывали e-mail — на него Let's Encrypt пришлёт письмо, если сертификат вдруг перестанет продлеваться (например, домен сменил IP и проверка не проходит). Это ваша страховка: даже при поломке автоматики вы узнаете о проблеме заранее, а не в момент, когда у посетителей уже выскочило предупреждение браузера."]
Wildcard-сертификат
['Нужен один сертификат на все поддомены (*.example.com)? Wildcard выпускается через DNS-проверку:', 'certbot certonly --manual --preferred-challenges dns \\\n -d example.com -d *.example.com', 'Certbot попросит добавить TXT-запись в DNS домена для подтверждения — удобно, когда поддоменов много и заводить каждый вручную не хочется. Минус ручного режима — TXT-запись меняется при каждом продлении, поэтому для регулярного автопродления wildcard настраивают DNS-плагин к API вашего регистратора. Если поддоменов у вас пара штук, проще выпустить обычный сертификат сразу на список доменов через -d — он продлевается полностью автоматически.']
Частые ошибки
["- Timeout при проверке — домен не указывает на сервер или закрыт 80-й порт. Откройте его:
ufw allow 80,443/tcp. - Too many certificates — лимит Let's Encrypt (5 выпусков на домен в неделю). Тестируйте через
--dry-run. - Смешанный контент — часть ресурсов грузится по http. Замените ссылки на https в коде и базе.
- Сертификат не продлился — проверьте таймер и логи
/var/log/letsencrypt/.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с бесплатным SSLЧастые вопросы
Действительно ли Let's Encrypt бесплатен и надёжен?
Да, полностью бесплатен, а сертификаты доверяются всеми браузерами наравне с платными. Единственное отличие — срок 90 дней, но продление автоматическое.
Что будет через 90 дней?
Сертификат продлится сам: certbot ставит таймер, который обновляет его заранее. Проверить настройку можно командой certbot renew --dry-run.
Можно ли выпустить один сертификат на все поддомены?
Да, wildcard-сертификатом на *.example.com. Он выпускается через DNS-проверку — вы добавляете TXT-запись, и certbot подтверждает владение доменом.