SSL-сертификат для сайта: как получить бесплатно, установить и проверить
SSL-сертификат для сайта нужен, чтобы данные между браузером и сервером передавались в зашифрованном виде, а адрес начинался с https. Без него браузеры помечают сайт как «Не защищено», а при вводе данных в форму предупреждают посетителя об опасности. Для обычного сайта компании, лендинга или интернет-магазина хватает бесплатного сертификата Let’s Encrypt: шифрование у него такое же, как у платного, а выпуск и продление на большинстве хостингов делаются одной кнопкой. Ниже о том, какие бывают сертификаты, как получить SSL бесплатно, как проверить сертификат и что делать с ошибками в браузере.
Что такое SSL-сертификат и как он работает
Формально протокол давно называется TLS, но по привычке все говорят SSL. Сертификат это небольшой файл, который связывает доменное имя с ключом шифрования и подписан удостоверяющим центром. Браузер доверяет ограниченному списку таких центров. Когда посетитель открывает сайт, браузер получает сертификат, проверяет подпись, срок действия и совпадение домена и только после этого устанавливает зашифрованное соединение.
Что даёт https на практике:
- данные форм, пароли и платёжные сведения не читаются по дороге, например в общественной сети Wi-Fi;
- никто между вами и посетителем не подменит содержимое страницы, не вставит рекламу или вредоносный скрипт;
- браузер не пугает посетителя пометкой «Не защищено»;
- работают современные технологии: HTTP/2, геолокация, push-уведомления, многие платёжные виджеты требуют https;
- поисковики предпочитают https: Google прямо учитывает его как сигнал, а Яндекс склеивает зеркала и показывает в поиске версию с https, если она настроена правильно.
Какие бывают SSL-сертификаты
| Тип | Что проверяется | Кому подходит |
|---|---|---|
| DV (Domain Validation) | только право управлять доменом | почти все сайты: визитки, блоги, магазины |
| OV (Organization Validation) | домен и существование организации | компании, которым нужны реквизиты в сертификате |
| EV (Extended Validation) | расширенная проверка компании | банки, крупные платёжные сервисы |
| Wildcard | домен и все поддомены вида *.site.ru | сайты с множеством поддоменов |
| Мультидоменный (SAN) | несколько разных доменов в одном сертификате | группы сайтов одной компании |
Шифрование у всех типов одинаковое. Разница в том, что именно проверил удостоверяющий центр перед выдачей. Раньше EV-сертификат подсвечивал название компании зелёным в адресной строке, но браузеры давно убрали эту подсветку, и обычный посетитель отличия не увидит. Поэтому для большинства бизнес-сайтов переплачивать за OV или EV нет смысла.
Как получить SSL-сертификат бесплатно
Let’s Encrypt
Let’s Encrypt это некоммерческий удостоверяющий центр, который выдаёт DV-сертификаты бесплатно и автоматически. Ему доверяют все актуальные браузеры. Сертификат действует 90 дней, поэтому продление должно быть автоматическим: вручную про него рано или поздно забудут.
Wildcard-сертификаты Let’s Encrypt тоже выдаёт, но только с подтверждением через DNS-запись, а это сложнее автоматизировать, если DNS у регистратора без API.
Через панель хостинга
У большинства хостингов есть раздел SSL-сертификатов, где бесплатный сертификат Let’s Encrypt выпускается кнопкой, а продление хостинг берёт на себя. Порядок обычно такой:
- Домен должен уже смотреть на этот хостинг: A-запись указывает на IP сервера.
- В разделе SSL выберите домен и бесплатный сертификат.
- Отметьте, что сертификат нужен и для
www, иначе на адресе с www будет ошибка. - Дождитесь выпуска, обычно это минуты.
- Настройте редирект с http на https, если хостинг не сделал этого сам.
На своём сервере через Certbot
На VPS с nginx сертификат выпускается утилитой Certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d site.ru -d www.site.ru
Certbot сам подтвердит домен, пропишет сертификат в конфигурацию nginx и предложит включить редирект на https. Продление он настраивает через системный таймер или cron. Проверить, что продление сработает, можно заранее:
sudo certbot renew --dry-run
Конструкторы сайтов
На Tilda, в облачных платформах для магазинов и в большинстве конструкторов сертификат для подключённого домена выпускается автоматически. Делать ничего не нужно, кроме проверки, что сайт открывается по https.
Платный сертификат: когда он нужен
Платный DV-сертификат по сути делает то же, что бесплатный, плюс поддержка продавца и страховая гарантия, которая на практике почти никогда не используется. Покупать платный сертификат имеет смысл, если:
- нужен OV или EV, например по требованию банка, партнёра или тендерной документации;
- автоматическое продление невозможно: старое оборудование, корпоративная инфраструктура, где каждый сертификат ставят вручную;
- нужны особые условия, которых нет у бесплатных центров.
Учтите, что срок жизни платных сертификатов тоже сокращается. Отраслевые правила удостоверяющих центров и браузеров постепенно уменьшают максимальный срок действия публичных сертификатов, и годовой сертификат с ручной установкой раз в год уходит в прошлое. Автоматизация продления нужна при любом выборе.
Отдельная история с российскими сертификатами Национального удостоверяющего центра. Они появились в 2022 году для сайтов, которым западные центры отказали в выпуске. Им доверяют Яндекс Браузер и ещё несколько российских браузеров, а Chrome, Firefox и Safari без установки корневого сертификата на устройство покажут ошибку. Для обычного коммерческого сайта, у которого нет проблем с Let’s Encrypt, такой сертификат не нужен.
Что сделать после установки сертификата
Сертификат установлен, но работа не закончена. Чтобы переход на https прошёл без потерь:
- Настройте 301 редирект с http на https для всех страниц с сохранением пути. Готовые правила для .htaccess и nginx в статье про 301 редирект.
- Уберите смешанное содержимое. Картинки, скрипты и стили, подключённые по http, браузер на https-странице заблокирует или пометит. Замените адреса в шаблоне и в базе данных. В WordPress это делают поиском и заменой по базе, например через WP-CLI.
- Обновите внутренние ссылки, canonical и sitemap.xml на адреса с https.
- Сообщите Яндексу. В Вебмастере добавьте https-версию сайта и оформите переезд в разделе «Индексирование», пункт «Переезд сайта», отметив переход на HTTPS. Подробнее в статье переезд сайта без потери позиций.
- Проверьте Метрику, рекламу и интеграции. Адрес сайта в счётчике, ссылки в объявлениях Директа, адреса для вебхуков платёжной системы и CRM.
После переезда на https позиции в Яндексе обычно не проседают заметно, если редирект стоит постраничный, а не на главную.
HSTS: включать осторожно
Заголовок Strict-Transport-Security заставляет браузер всегда открывать сайт только по https, даже если человек набрал http. Это полезно, но обратного пути нет на весь срок, указанный в заголовке. Если сертификат однажды не продлится, посетители, у которых браузер запомнил HSTS, не смогут открыть сайт вообще, даже нажав «всё равно перейти». Включайте HSTS, когда продление работает стабильно, и начинайте с небольшого срока.
Как проверить SSL-сертификат
В браузере
Нажмите на значок слева от адреса и откройте сведения о сертификате. Там видно, кем выдан сертификат, для каких доменов и до какого числа он действует.
Онлайн
Самый подробный бесплатный сервис SSL Labs Server Test от Qualys. Он проверяет цепочку сертификатов, поддерживаемые версии протокола, настройки шифрования и выставляет оценку от A+ до F. Оценка A или A+ означает, что всё настроено как следует. Если сервис пишет про неполную цепочку (chain incomplete), это нужно исправить, даже если в вашем браузере сайт открывается.
В командной строке
echo | openssl s_client -connect site.ru:443 -servername site.ru 2>/dev/null | openssl x509 -noout -dates -subject
Команда покажет, для какого домена выдан сертификат и даты начала и окончания действия. Её удобно встроить в скрипт мониторинга, который за 14 дней до окончания пришлёт уведомление в Telegram.
Мониторинг срока действия
Самая частая причина ошибки SSL на работающем сайте банальна: сертификат не продлился. Автопродление сломалось после смены DNS, переноса сайта на другой сервер или правки конфигурации, а узнали об этом от клиентов. Поэтому кроме автопродления нужен независимый контроль:
- скрипт или сервис мониторинга, который раз в день проверяет дату окончания и предупреждает за две недели;
- проверка после любых изменений DNS, сервера или домена;
- отдельный список всех доменов и поддоменов компании с сертификатами: лендинги, почта, CRM, тестовые стенды.
Если у вас несколько сайтов, это занимает час на настройку и избавляет от внезапных ошибок в пятницу вечером.
Частые ошибки SSL и как их исправить
| Что видит посетитель | Причина | Решение |
|---|---|---|
| NET::ERR_CERT_DATE_INVALID | сертификат истёк, реже неверное время на устройстве | продлить, настроить автопродление |
| NET::ERR_CERT_COMMON_NAME_INVALID | сертификат выдан на другой домен, часто нет www | перевыпустить с обоими вариантами домена |
| NET::ERR_CERT_AUTHORITY_INVALID | самоподписанный сертификат или центр, которому браузер не доверяет | поставить сертификат признанного центра |
| На компьютере работает, на телефоне ошибка | не установлен промежуточный сертификат | подключить полную цепочку (fullchain.pem) |
| ERR_TOO_MANY_REDIRECTS после включения https | редирект на https срабатывает за прокси бесконечно | проверять заголовок X-Forwarded-Proto |
| Замок с предупреждением или без замка | смешанное содержимое по http | заменить адреса ресурсов на https |
| ERR_SSL_PROTOCOL_ERROR | ошибка в настройке сервера или устаревший протокол | проверить конфигурацию через SSL Labs |
Ошибка с промежуточным сертификатом коварна тем, что настольные браузеры часто достраивают цепочку сами, и владелец сайта ничего не замечает. А часть мобильных устройств, платёжные сервисы и чужие серверы, которые присылают вебхуки, получают ошибку. Поэтому проверяйте сертификат внешним сервисом, а не только своим браузером.
Частые вопросы
Достаточно ли бесплатного SSL-сертификата для интернет-магазина?
Да. Шифрование у Let’s Encrypt такое же, как у платных DV-сертификатов, а платёжные системы требуют именно https, а не конкретного продавца сертификата. Платный нужен, если OV или EV прямо требует банк или партнёр.
Как часто продлевать SSL-сертификат?
Let’s Encrypt действует 90 дней, Certbot и панели хостингов продлевают его автоматически примерно за месяц до окончания. Ваша задача убедиться, что автопродление настроено, и поставить мониторинг срока действия.
Как найти смешанное содержимое на странице?
Откройте страницу, затем DevTools и вкладку Console: браузер выводит предупреждения Mixed Content с адресами ресурсов, загруженных по http. Для всего сайта удобнее краулер, который покажет http-ссылки на картинки, скрипты и стили на всех страницах сразу.
Нужен ли SSL сайту-визитке без форм?
Нужен. Браузеры помечают любой сайт без https как незащищённый, а это отпугивает посетителей. К тому же бесплатный сертификат ничего не стоит.
Упадут ли позиции при переходе на https?
При правильном переезде заметных потерь нет. Главное: постраничный 301 редирект, переезд в Вебмастере и исправленные внутренние ссылки. Временные колебания на время переклейки зеркал возможны.
Если сертификат истекает, сайт показывает ошибку или нужно перевести сайт на https без потерь, мы сделаем это в рамках техподдержки сайта. А заодно можем проверить остальные уязвимые места в ходе аудита безопасности.