SSL сертификат и HTTPS: как включить
Что даёт сертификат, как включить HTTPS через панель хостинга, Let's Encrypt с certbot, Caddy или Cloudflare и как проверить результат.
Содержание10
Коротко
- HTTPS шифрует трафик между браузером и сайтом и подтверждает, что открыт именно ваш домен. Без него браузеры помечают сайт как небезопасный.
- Бесплатного сертификата Let's Encrypt хватает большинству сайтов. Платный не шифрует сильнее.
- Проще всего включить SSL кнопкой в панели хостинга, через Caddy или через Cloudflare.
- Продление должно быть автоматическим, а срок жизни сертификатов со временем сокращается.
- Проверяйте результат по замку в браузере и командой
curl -I.
Что даёт сертификат
Сертификат связывает ключ шифрования с доменом. При подключении браузер проверяет срок действия, имя и цепочку доверия. Слово SSL историческое: сейчас работает протокол TLS, но привычное название осталось. Для большинства сайтов достаточно бесплатного сертификата с проверкой домена. Платный отличается проверкой организации и условиями поддержки, а не силой шифрования.
Способы включить HTTPS
- Панель хостинга. В разделе SSL или Let's Encrypt выпустите сертификат для домена и
www. Продление обычно автоматическое, но условия проверьте у своего хостинга. - Caddy. Получает и продлевает сертификаты сам.
- Certbot на своём сервере с nginx или Apache.
- Cloudflare. Сертификат для посетителей выпускается автоматически, а на сервере нужен свой.
Let's Encrypt и certbot
Нужно, чтобы A-запись домена вела на сервер, порты 80 и 443 были открыты, а nginx отвечал на этом домене.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run
Через -d перечислите все имена, которые должны открываться по HTTPS. Последняя команда проверяет автоматическое продление.
Caddy
example.com, www.example.com {
reverse_proxy 127.0.0.1:3000
}
Caddy сам получает сертификат (Let's Encrypt или ZeroSSL), продлевает его и перенаправляет HTTP на HTTPS. Нужны A-запись на сервер и открытые порты 80 и 443. Полный пример есть в статье как развернуть сайт на VPS.
Cloudflare
Когда домен стал Active, Universal SSL выпускается и продлевается автоматически, и посетитель видит сертификат Cloudflare. Между Cloudflare и сервером нужен свой сертификат (Let's Encrypt или Origin CA) и режим Full (strict). Подробности в статье как подключить домен к Cloudflare.
Продление
Сертификат Let's Encrypt сейчас действует 90 дней, а, по анонсу компании, срок для стандартного профиля сократят до 64 дней с февраля 2027 и до 45 дней с февраля 2028. Поэтому продление должно идти автоматически. С июня 2025 Let's Encrypt не присылает письма об истечении срока, так что настройте мониторинг или проверяйте дату сами.
Как проверить
curl -I https://example.com
curl -I http://example.com
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject
Первая команда не должна выдавать ошибку сертификата. Вторая должна вернуть редирект (301 или 308) на https. Третья показывает даты действия и имя в сертификате. В браузере нажмите на замок рядом с адресом и откройте сведения о сертификате.
Смешанный контент и HSTS
Смешанный контент: страница по HTTPS грузит картинки, скрипты или стили по http://. Браузер блокирует их или предупреждает. Откройте консоль разработчика, найдите такие адреса и замените их на https:// или на относительные.
HSTS (заголовок Strict-Transport-Security) велит браузеру ходить на сайт только по HTTPS. Включайте осторожно: браузер запомнит правило на весь срок max-age и не даст открыть сайт даже при просроченном сертификате, а быстро отменить это нельзя.
Начните с малого значения, например 300 секунд, и увеличивайте его, когда всё работает. Параметры includeSubDomains и preload включайте, только если уверены во всех поддоменах.
Если не получилось
- Сертификат просрочен: выполните
sudo certbot renew --dry-runи прочитайте ошибку. Частые причины: закрытый порт 80 или изменённая конфигурация. - Предупреждение о неверном имени: сертификат выпущен не на то имя, например без
www. Выпустите его заново со всеми именами. - ERR_TOO_MANY_REDIRECTS: в Cloudflare включён режим Flexible, а сервер сам перенаправляет HTTP на HTTPS, либо два редиректа работают друг против друга.
- Certbot не подтверждает домен: A-запись ведёт не на этот сервер, порт 80 закрыт файрволом, есть AAAA-запись на адрес без сервера или запись CAA не разрешает Let's Encrypt.
- Ошибки 525 и 526 у Cloudflare: сертификат на сервере недействителен или выпущен на другое имя.
- Часы на устройстве сбиты: браузер считает действующий сертификат просроченным.
Если что-то непонятно, напишите мне в Telegram: @lztcoder
Читайте также
Как оплатить заказ криптовалютой
Как оплатить счёт из бота на странице Heleket, выбрать валюту и сеть, отправить точную сумму, проверить ссылку и действовать при ошибке.
4 мин чтенияКак подключить домен к Cloudflare
Как добавить домен в Cloudflare, сменить NS, выбрать режим SSL/TLS и понять разницу между оранжевым и серым облаком.
4 мин чтенияСпамблок в Telegram: что это и что делать
Что такое ограничения аккаунта Telegram, как проверить статус через @SpamBot, как подать апелляцию и чего делать нельзя.
4 мин чтения