Что может помешать:
Проблема: хостинг, на котором размещен сайт, не выдает/не устанавливает такие SSL-сертификаты. Случай крайне редкий!
Решение: выпустить SSL-сертификат в сертификационном центре и установить на хостинг путем добавления записей самостоятельно или с помощью техподдержки хостинга.
Проблема: несколько сайтов находятся в одной админ-панели и неосновные домены являются "алиасами" (псевдонимами), для которых выпуск ssl-сертификатов невозможен. Проблема была зафиксирована на хостинге Mchost.
Решение: для основного сайта выпуск возможен. Необходимо воспользоваться видоизмененным редиректом в файле .htaccess для "склейки". Все "алиасы" нужно перевести в режим отдельных "папок" (сайтов), выпустить для них SSL-сертификаты. Сделать с них 301 редиректы на основной сайт.
Проблема: у домена есть поддомены.
Решение: выпуск сертификата Wild, который распространяется и на поддомены (не более 99). В редких случаях используют выпуск отдельных сертификатов для каждого поддомена.
Проблема: на сайте есть контент, использующий данные с других сайтов, не перешедших на https.
Решение: ждать, пока все сторонние сайты перейдут на защищенное соединение, либо отказаться от этого контента.
Практически любой хостинг предоставляет возможность выпуска SSL-сертификатов - бесплатных и платных.
Если условия вас не устраивают, а хостинг поменять нельзя, то закажите SSL на стороннем сервисе. Их много — reg.ru, 2domains.ru и т.д.
Купленный сертификат можно установить из админ-панели хостинга. Потребуется помощь технического специалиста.
Если сайт представляет собой интернет-магазин, то бесплатный сертификат не подойдет.
— Настройки в административной панели для перехода на https протокол.
Время и сложность зависят от "админки" - где-то пара кнопок, где-то чуть дольше.
Например, для MODX REVO нужно сделать две системные настройки link_tag_scheme (значение - 1) и server_protocol (значение - https). Если используете несколько контекстов, то поменять настройки нужно для каждого контекста.
— Настроить редирект в .htaccess.
Во всех правилах с явным указанием протокола нужно поменять http на https, а также добавить склейку двух зеркал http и https. Причем делать это нужно аккуратно, так как на одном хостинге правило может работать корректно, а на другом вызвать циклическую переадресацию.
Вариантов правил склейки несколько. Решается методом проб и перебора.
Наиболее часто используемые варианты:
Вариант 1
RewriteCond %{ HTTPS} =off
RewriteRule (.*) https://%{ HTTP_HOST}%{ REQUEST_URI} [QSA,L]
Вариант 2 (!)
RewriteCond %{ SERVER_PORT} !^443$
RewriteRule .* https://%{ SERVER_NAME}%{ REQUEST_URI} [R=301,L]
Вариант 3
RewriteCond %{ ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{ REQUEST_URI} [L,R=301]
Вариант 4 (!)
RewriteCond %{ HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{ HTTP_HOST}/$1 [R=301,L]
Вариант 5
RewriteCond %{ HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://www.domain.com/$1 [L]
#не забудьте заменить на ваш домен
Вариант 6
RewriteCond %{ HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{ SERVER_NAME}%{ REQUEST_URI} [R=301,L]
Вариант 7.
RewriteCond %{ HTTP:X-Forwarded-Proto} !https
RewriteCond %{ HTTPS} off
RewriteRule ^ https://%{ HTTP_HOST}%{ REQUEST_URI} [L,R=301,NE]
Далее, все стили, скрипты, шрифты должны загружаться через https. Нужно проверить и исправить, если это не так.
Если на сайте есть абсолютные внутренние ссылки, заменить их на относительные без указания протокола и домена.
Все внешние ссылки нужно заменить на безпротоколовый вариант (начинать с //, например href=”//a-tum.ru”).
Проверить файлы robots.txt и sitemap.xml — везде должен быть https протокол.
"Скинуть" кеш сайта.
Полностью проверить работоспособность сайта: все ли страницы корректно открываются, отправляются ли формы, работают ли скрипты, калькуляторы, личный кабинет, интернет-магазин, онлайн-оплата и так далее.