SSL-сертификат на VPS: как сделать сайт на HTTPS бесплатно

Сайт без HTTPS браузеры помечают как небезопасный, посетители видят предупреждение, а поисковики понижают такой сайт в выдаче. Решает это SSL-сертификат - он включает шифрование и превращает http в https с замочком в адресной строке. И самое приятное: для обычного сайта он бесплатный.

Разберём, что такое SSL и HTTPS, зачем это нужно, чем бесплатный сертификат отличается от платного, как выпустить его на VPS и настроить автопродление, а также какие проблемы встречаются чаще всего.

Что такое SSL и HTTPS

чем отличается сайт на HTTP от сайта на HTTPS.
чем отличается сайт на HTTP от сайта на HTTPS.

SSL - это технология шифрования данных между браузером посетителя и сервером. Когда сертификат установлен, сайт работает по протоколу HTTPS: всё, что передаётся между пользователем и сайтом, шифруется, и перехватить это по дороге нельзя.

Без SSL данные идут по HTTP в открытом виде - логины, пароли, данные форм можно перехватить. С SSL появляется замочек в адресной строке, а данные защищены. Именно поэтому HTTPS сегодня - стандарт, а не опция.

Зачем сайту SSL

Причин несколько, и все весомые:

  • Браузеры помечают HTTP как небезопасный. Посетитель видит предупреждение ещё до входа на сайт - это отпугивает.
  • Доверие. Замочек и HTTPS - привычный признак нормального сайта. Без него сайт выглядит подозрительно.
  • Защита данных. Всё, что вводят на сайте, шифруется и не перехватывается по дороге.
  • SEO. Поисковики учитывают HTTPS как фактор ранжирования и выше ставят защищённые сайты.
  • Обязательно для форм и оплаты. Приём любых данных пользователей без HTTPS сегодня неприемлем.

Проще говоря, сайт без SSL теряет и посетителей, и позиции в поиске. Поэтому сертификат ставят сразу.

Бесплатный или платный сертификат

Здесь частое заблуждение - что за SSL обязательно нужно платить. Для большинства сайтов это не так.

Бесплатный (Let's Encrypt)Платный
ШифрованиеПолноценное, как у платныхПолноценное
Замочек в браузереЕстьЕсть
СтоимостьБесплатноОт нескольких тысяч в год
Срок90 дней, автопродлениеГод и больше
Проверка организацииНетЕсть (OV, EV)
Кому подходитБольшинству сайтовБанки, крупный бизнес, где важна проверка компании

Бесплатный Let's Encrypt даёт точно такое же шифрование и замочек, как платный. Для обычного сайта, магазина, блога, корпоративного сайта его полностью достаточно.

Платные сертификаты нужны в основном там, где важна проверка организации с отображением названия компании - банки, крупные финансовые сервисы. Для остального это лишняя трата.

Как выпустить бесплатный SSL

На VPS бесплатный сертификат выпускается инструментом certbot, который сам получает сертификат, прописывает его в веб-сервер и настраивает автопродление.

Ставим certbot (пример для Nginx):

sudo apt install certbot python3-certbot-nginx

Выпускаем сертификат для домена:

sudo certbot --nginx -d mysite.ru -d www.mysite.ru

Certbot проверит, что домен ваш, выпустит сертификат, добавит его в конфиг веб-сервера и настроит редирект с HTTP на HTTPS. После этого сайт открывается по https:// с замочком. Подробнее про сам веб-сервер - в статье Nginx на VPS.

Если на сервере стоит панель управления, SSL обычно выпускается ещё проще - в пару кликов через интерфейс, без командной строки.

Автопродление

Сертификаты Let's Encrypt действуют 90 дней - это сделано намеренно, ради безопасности. Продлевать вручную каждые три месяца не нужно: certbot настраивает автоматическое продление при установке.

Проверить, что автопродление работает:

sudo certbot renew --dry-run

Команда имитирует продление без реального выпуска. Если она прошла без ошибок - сертификат будет продлеваться сам, и сайт не окажется внезапно с истёкшим SSL.

Сертификат для поддоменов

Если у сайта есть поддомены (shop.mysite.ru, blog.mysite.ru), есть два пути:

  • перечислить каждый в команде выпуска через -d - подходит, когда поддоменов немного;
  • wildcard-сертификат (*.mysite.ru) - покрывает все поддомены разом, удобно, когда их много.

Wildcard от Let's Encrypt тоже бесплатный, но требует подтверждения через DNS-запись, что чуть сложнее обычного выпуска.

Частые проблемы

Mixed content (смешанное содержимое). Сайт на HTTPS, но часть картинок или скриптов грузится по HTTP - браузер ругается и не показывает замочек. Лечится заменой всех ссылок внутри сайта на https://.

Сертификат истёк. Автопродление не настроилось или сломалось. Проверяется командой renew --dry-run, важно убедиться, что оно работает.

Нет редиректа с HTTP. Сайт открывается и по http, и по https. Нужно настроить перенаправление всех запросов на HTTPS - certbot обычно делает это сам.

Частые ошибки

Сайт без SSL. Браузеры помечают его небезопасным, поисковики понижают. Сертификат ставят сразу, тем более что он бесплатный.

Платят за сертификат без необходимости. Для обычного сайта бесплатный Let's Encrypt даёт то же шифрование. Платный нужен редко - там, где важна проверка организации.

Не проверили автопродление. Сертификат истёк через 90 дней, сайт стал небезопасным. Автопродление проверяют командой renew --dry-run.

Забыли про mixed content. HTTPS есть, а замочка нет из-за ссылок по HTTP внутри сайта. Все внутренние ссылки должны быть на https://.

Частые вопросы

Нужно ли платить за SSL-сертификат? Для обычного сайта - нет. Бесплатный Let's Encrypt даёт полноценное шифрование и замочек, как платный. Платные сертификаты нужны в основном банкам и крупному бизнесу, где важна проверка организации.

Чем бесплатный сертификат хуже платного? Шифрованием - ничем, оно одинаковое. Разница в сроке (90 дней с автопродлением против года) и в проверке организации, которой у бесплатных нет. Для большинства сайтов это неважно.

Как выпустить SSL на VPS? Инструментом certbot: он получает сертификат, прописывает в веб-сервер и настраивает автопродление. С панелью управления SSL выпускается в пару кликов через интерфейс.

Почему сертификат всего на 90 дней? Это сделано ради безопасности: короткий срок снижает риски при компрометации. Продлевать вручную не нужно - certbot настраивает автоматическое продление.

Что такое mixed content? Когда сайт на HTTPS, но часть содержимого грузится по HTTP. Браузер считает страницу не полностью защищённой и не показывает замочек. Лечится переводом всех внутренних ссылок на HTTPS.

Нужен ли отдельный сертификат для поддоменов? Либо перечислить поддомены при выпуске, либо взять wildcard-сертификат на *.mysite.ru, покрывающий все сразу. Wildcard от Let's Encrypt тоже бесплатный, но требует подтверждения через DNS.


Разворачиваете сайт на VPS? Серверы на NVMe с чистым Linux или панелью - выпускайте бесплатный SSL через certbot или в пару кликов в панели. Активация за 3 минуты, root-доступ сразу. Первые 7 дней - тестовый период с возвратом средств.

Что дальше