Как перейти с HTTP на HTTPS – простая инструкция установки SSL
Веб в своем развитии движется в направлении использования безопасного протокола шифрования HTTPS по умолчанию. Данное направление, помимо прочего, стимулируется и крупными поисковыми системами, как например Google, который еще в 2014 году объявил, что HTTPS станет сигналом SEO-ранжирования. Однако, кроме такого поискового сигнала, переход сайта на HTTPS хорош и другими «плюшками», например:
- Защита конфиденциальности пользователей (логины, пароли, кредитные карты и т.д.)
- Браузеры помечают сайты с протоколом HTTP как небезопасные
- Возможность использовать преимущества HTTP/2 (мультиплексирование, доступ к некоторым API и т.п.)
- Защита своего рекламного дохода от перехвата недобросовестными Интернет- и Wi-Fi-провайдерами (которые на незащищенных сайтах «крутят» свою рекламу)
Почему HTTPS — это уже не опция, а стандарт?
SSL-сертификат (технология, стоящая за HTTPS) шифрует данные между браузером пользователя и вашим сервером. Это делает практически невозможным перехват паролей, данных банковских карт или личных сообщений.
Но помимо самой безопасности, есть еще три причины, почему это необходимо:
- 🛡️ Доверие пользователей (E-E-A-T): «Небезопасно» — это первое, что видит посетитель на HTTP-сайте. Это сигнал для него немедленно уйти. Наличие HTTPS является ключевым фактором для Trustworthiness (Надежности) из концепции Google E-E-A-T.
- 📈 Прямой фактор SEO: Еще с 2014 года Google официально объявил HTTPS сигналом для ранжирования. Сайты на HTTPS получают приоритет в выдаче.
- ⚙️ Современные технологии: Многие новые веб-технологии (например, HTTP/2, Progressive Web Apps) работают только через HTTPS.
Я не буду подробно рассматривать эти и другие преимущества, а лучше более детально остановимся на самом процессе перехода с HTTP на HTTPS. Ваше желание перейти на сайт с HTTPS принимается как свершившийся факт.
Этапы перехода на сайт HTTPS:
- Выбор и получение SSL сертификата
- Установка сертификата на сервер
- Перезапуск сервера
- Проверка установки сертификата SSL на хостинг
- Редирект с http на сайт https
Выбор и получение сертификата
Для начала вам нужно определиться с тем, бесплатный или платный вам нужен сертификат SSL-протокола. Небольшим сайтам и блогам вполне может хватить и бесплатного SSL-сертификата, или использования, например, самоподписанного (самозаверенного) SSL сертификата. Такие сертификаты не требуют дополнительных финансовых расходов, но имеют ряд существенных ограничений (например, короткий срок действия). Бесплатные сертификаты проще всего получить у хостера (если ваш хостинг достаточно «продвинут» и он выдает такие сертификаты; в этом случае хостинг-провайдер также поможет вам и с установкой сертификата). Бесплатные цифровые SSL-сертификаты выдают также и крупные центры сертификации (например, Let’s Encrypt, CloudFlare и похожие).
Платные же сертификаты имеют ряд дополнительных преимуществ, от которых и зависит их цена. Чем больше преимуществ вы хотите от цифрового сертификата, тем больше будет его цена. Например, самый дорогой SSL-сертификат (мультидоменный, с расширенной валидацией, «зеленой адресной строкой в браузере» и т.п.) обойдется в несколько сотен, а то и тысяч, долларов в год.
Цена бюджетных SSL сертификатов стартует от 10-15$ в год. Самыми известными центрами сертификации являются такие компании как Comodo, GeoTrust, Symantec и Trustwave. Повторюсь: многие хостинг-провайдеры являются дилерами крупных центров сертификации и цифровой SSL-сертификат можно купить напрямую у них; в этом случае хостинг-компания поможет вам и с его установкой.
Бесплатные сертификаты (Let’s Encrypt)
Для 95% сайтов (блогов, корпоративных сайтов, небольших магазинов) идеальным выбором является Let’s Encrypt. Это бесплатный, автоматизированный и открытый центр сертификации.
Как работает Let’s Encrypt?
Он выдает сертификаты сроком на 90 дней. Это сделано специально, чтобы стимулировать автоматизацию. Вам не нужно покупать и устанавливать его вручную каждые 3 месяца. Ваша хостинг-панель (cPanel, DirectAdmin, Plesk) или VPS-скрипт (Certbot) делает это за вас автоматически в фоновом режиме.
Сегодня практически каждый уважающий себя хостинг-провайдер интегрировал Let’s Encrypt в свою панель. Обычно это кнопка «Установить SSL» или «SSL/TLS Status», которая делает все за вас в один клик.
Установка сертификата на сервер
После выбора и получения сертификата SSL («на руки») пришла пора установить его на свой сервер. Тут могут быть разные пути в зависимости от того, где вы приобрели сертификат. Будем исходить из того, что вы выбрали платный сертификат и установить его вы взялись самостоятельно.
Крупные хостеры позволяют устанавливать цифровой сертификат через панель управления хостингом (например, через ISPmanager или DirectAdmin). В этом случае от вас требуется минимум усилий: перейти в соответствующий пункт (например, «Сертификаты SSL») и дальше кликать на нужных пунктах. Или скопировать нужные данные в соответствующие поля формы. Такой метод установки является рекомендуемым.
ВНИМАНИЕ: следующий метод установки предназначен только для опытных пользователей, которые знают, что делают.
Несколько сложнее дело обстоит с установкой через SSH (или FTP):
- вручную копируем файлы сертификата (сам сертификат с расширением .crt и закрытый ключ с расширением .key) на сервер
- изменяем файл настроек конфигурации веб-сервера (например,
httpd.confдля сервера Apache, илиnginx.confдля сервера Nginx), где прописываем включение режима SSL, а также путь к файлам сертификата. - перезапускаем веб-сервер
Пример строк в файле конфигурации для включения режима SSL при веб-сервере Apache:
<VirtualHost x.x.x.x:443>
DocumentRoot /var/www/
ServerName ВашДомен.com
SSLEngine on
SSLCertificateFile {путь к файлу}вашдомен.crt
SSLCertificateKeyFile {путь к файлу}вашдомен.key
SSLCertificateChainFile {путь к файлу}root.crt
</VirtualHost>
где:
x.x.x.x – это IP-адрес вашего домена,
а 443 – это TCP-порт, который слушает HTTPS по умолчанию (для HTTP по умолчанию 80-й порт)
Пример строк в файле конфигурации для включения режима SSL при веб-сервере Nginx:
server {
listen x.x.x.x:443;
server_name ВашДомен.com;
ssl on;
ssl_certificate {путь к файлу}вашдомен.crt;
ssl_certificate_key {путь к файлу}вашдомен.key;
}
где:
x.x.x.x – это IP-адрес вашего домена
Перезапуск сервера
ВНИМАНИЕ: выполняйте этот пункт, только если вы устанавливаете сертификат вручную, и вы являетесь опытным пользователем, который знает, что делает.
После установки SSL-сертификата на сервер нужно перезапустить веб-сервер, чтобы изменения вступили в силу.
Примеры команд для перезапуска веб-сервера (для различных ОС команды могут отличаться):
Для сервера Apache выполните SSH-команду
/etc/init.d/httpd restart
Для сервера Nginx выполните SSH-команду
/etc/init.d/nginx restart
Проверка установки сертификата SSL на хостинг
После установки сертификата пора проверить успешность такой установки. Самый простой способ проверки сертификата для сайта с https – набрать в адресной строке браузера адрес своего сайта с указанием перед доменом https://. Если установка была успешной, то ваш сайт должен отображаться нормально и все стили, скрипты, картинки и страницы должны нормально подгружаться. Такое редко в реальной жизни бывает с первого раза, но тем не менее :))
Протестировать установку на сайт https-а можно и через онлайн-инструменты (например, SSL Labs или SSL Checker).
Редирект с http на сайт https (301 Редирект)
После успешной установки и проверки на сайте https`а можно все запросы к своему домену перенаправлять на обязательные SSL/HTTPS ответы. Поскольку после того, как сертификат установлен, ваш сайт станет доступным по обоим адресам: http:// и https://. А это очень плохо для SEO, так как создает дубликаты страниц. Наша задача — принудительно «склеить» все версии в одну, основную, с помощью 301-го редиректа (перемещено навсегда).
Ниже указан фрагмент кода, который нужно для этого добавить в файл .htaccess в корне сайта (если у вас сервер Apache).
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ИЛИ так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://vashdomen.com/$1 [R=301,L]
</IfModule>
Для сервера Nginx директивы будут следующими (файл конфигурации .conf)
В вашем файле конфигурации сервера (обычно в /etc/nginx/sites-available/) нужно иметь два блока server:
# Первый блок перенаправляет весь HTTP-трафик на HTTPS
server {
listen 80;
server_name vashdomen.com www.vashdomen.com;
return 301 https://$server_name$request_uri;
}
# Второй блок обрабатывает HTTPS
server {
listen 443 ssl;
server_name vashdomen.com www.vashdomen.com;
# ... настройки вашего SSL-сертификата ...
# ... остальная конфигурация сайта ...
}
(не забудьте везде использовать вместо vashdomen.com свой собственный домен)
(также не забывайте делать бекап файлов и базы данных перед их изменениями)
🔥 Бонус-шаг: HSTS
После того, как вы убедились, что HTTPS работает идеально, я настоятельно рекомендую добавить заголовок HSTS. Он приказывает браузеру всегда загружать ваш сайт по HTTPS, даже если пользователь введет http://. Это повышает безопасность. Подробнее об этом я писал в статье про HTTP-заголовки.
Важный шаг: пост-миграционный чек-лист
Работа еще не закончена! Чтобы избежать SEO-проблем, пройдитесь по этому списку:
- Проверка на «Смешанный контент» (Mixed Content): Это когда ваша HTTPS-страница загружает ресурсы (картинки, скрипты, стили) по HTTP. Браузеры блокируют такой контент. Откройте консоль разработчика (
F12) и проверьте, нет ли там ошибок. - Обновление внутренних ссылок: Пройдитесь по базе данных и замените все абсолютные ссылки
http://наhttps://. - Google Search Console: Добавьте новую версию сайта (
https://) как новый ресурс и укажите ее как основное зеркало. - Google Analytics: Не забудьте изменить http:// на https:// в настройках вашего ресурса и представления.
- Обновление
sitemap.xmlиrobots.txt: Убедитесь, что ваша карта сайта содержит HTTPS-адреса, и (при необходимости) укажите путь к ней вrobots.txt.
Вывод: это базовая гигиена вашего сайта
По моему мнению, переход на HTTPS сегодня — это не «оптимизация», а базовое требование, как мобильная адаптация. Это фундамент, на котором строится доверие пользователей и поисковых систем.
Не откладывайте этот процесс. Большинство современных хостингов сделали его бесплатным и почти автоматическим. Ваши усилия окупятся повышением доверия, улучшением позиций и общей безопасностью вашего проекта.
Рекомендую также ознакомиться:
Счастливого вашему сайту HTTPS’а!