Переезд с http на https в Веб-окружении 1С-Битрикс

Переезд с http на https в Веб-окружении 1С-Битрикс

2572
23.03.2017
28.07.2018

В последнее время очень участились запросы на настройку сайтов на https-защиту.

Для специалиста в администрировании серверов это простое дело, а вот для всех остальных, данный процесс может быть очень даже не простым. Попробую в общих чертах обрисовать процесс добавления сертификата для сайта, размещенного на виртуальной машине 1С-Битрикс (для варианта, когда сайт установлен как дополнительный для веб-окружения).

Перед началом работ по переносу сайта с http на https убедитесь, что у вас на сайте отсутствуют абсолютные ссылки. Чаще всего такое встречается в текстах, которые прописывают контент-менеджеры - они обычно тексты пишут в каком-то текстовом процессоре, а потом просто копируют в редактор. При этом ссылки все остаются с указанием протокола и домена. Тут нужно или глазами просматривать, или писать скрипт проверки - все индивидуально.

Для начала получаем сертификат. Где вы будете брать сертификат и какой лучше выбрать - это оставлю за кадром - в сети очень много информации по данному вопросу.  Для установки SSL в nginx потребуются следующие файлы: коренвой сертификат (root), сертификат посредника (intermediate) и непосредственно сам сертификат для домена.

Перейдем сразу к процессу создания сертификата. Будем считать, что вы выбрали обычный сертификат с проверкой одного домена.

Итак, вы начинаете генерацию сертификата. На первом же шаге система вам генерирует ключ (обычно он показывается в простом текстовом поле и подразумевается само собой, что вы должны его скопировать себе и сохранить). Это ваш секретный ключик, который нужно! сохранить - без него все, что дальше - бесполезно!

На основании этого, сохраненного вами ключа будет сгенерирован сертификат для вашего домена (или доменов), который, скорей всего, будет выслан вам на контактный e-mail, но, возможно, также будет и ссылка на скачивание прямо в панели.

Будем считать, что ключик у вас уже есть (самое главное, есть личный ключ, который сохраняем в виде: domain_ru.key). Нас интересуют всего 2 файла:  domain_ru.crt и domain_ru.key.

Авторизуемся в веб-окружении под root-пользователем. Создаем папку:

mkdir ~/serts

В данную папку заливаем наши файлы с сертификатом.

Дальше, эти 2 файла нужно объединить в один общий:

cat domain_ru.key domain_ru.crt domain_ru.ca-bundle >> domain.ru.pem

domain_ru.ca-bundle - цепочка сертификатов от сервера лицензий. Более подробно про то, какие сертификаты объединять, можно почитать тут

И копируем полученный файл в список сертификатов сервера:

cp domain.ru.pem /etc/nginx/ssl/domain.ru.pem

Дальше нужно изменить файл сертификата

/etc/nginx/bx/site_avaliable/bx_ext_ssl_domain.ru.conf 

(если сайт заведен в веб-окружении как основной, править нужно файлы /etc/nginx/bx/site_avaliable/ssl.s1.conf и /etc/nginx/bx/site_avaliable/s1.conf)

В файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_domain.ru.conf необходимо включить наши файлы сертификата.

Для этого комментируем строчку include bx/conf/ssl.conf; (вставляем впереди нее #) а вместо нее вставляем содержимое файла /etc/nginx/bx/conf/ssl.conf

Во вставленном коде, необходимо указать наши ssl-сертификаты:

ssl_certificate /etc/nginx/ssl/domain.ru.pem
ssl_certificate_key /etc/nginx/ssl/domain.ru.pem

Сохраняем файл и проверяем конфигурацию на отсутствие ошибок:

nginx-t

Дальше, нам нужно настроить, чтобы сайт был доступен только по https. Для этого открываем файл:

/etc/nginx/bx/site_avaliable/bx_ext_ssl_domain.ru.conf

В данном файле после блока

server_name domain.ru www.domain.ru

пишем:

if ($scheme = http) {
   return 301 https://$server_name$request_uri;
}

Еще раз проверяем конфигурацию nginx и перезагружаем nginx. Если все было сделано верно - вы получите корректно настроенный 301-й редирект с http на https с установленным для домена сертификатом.

Для проверки корректности установки сертификата вы можете воспользоваться сервисом.

Как видите, данный процесс не такой уж и сложный. Далее не забудьте изменить адрес sitemap.xml и хост в  robots.txt, а также изменить протокол для адресов в генераторе вашей карты сайта (если, конечно, ваш генератор карты не делает этого сам. К примеру, мой генератор карты сайта, построенный на основе модуля поиска определяет протокол автоматически).

Update 2017-02-02. Шпаргалка по SSL-сертификатам:

Запрос на выдачу сертификата и приватный ключ удобно генерировать в Онлайн CSR Генератор .

Основные цепочки сертификатов:

Comodo Essential SSL:

cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle

Comodo Essential SSL\PositiveSSL:

cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >  yourDomain.ca-bundle

RapidSSL

cat ServerCertificate.cer CACertificate-1.cer CACertificate-2.cer > yourDomain.ca-bundle

Сервис от Qualys SSL Labs представляет очень подробную техничесткую информацию о настройке ssl на Вашем сайте.

Update 2018-07-10. Замечательное видео о выпуске сертификата:

Инструкция на сайте ssl.com.ua..

Update 2018-07-13. Как искать http://

Если ваш сайт переежает с http на https - первое, что вы должны сделать - это избавиться от всех http:// ссылок.

Процесс перехода состоит вообще из таких шагов:

Но как же искать эти все http? Не просматривать же вручную все элементы инфоблока? Для поиска протокола в элементах инфоблоках можно отрыть в административном разделе сайта страницу Настройки - Инструменты - SQL-запрос и тут выполнить запрос:

select `ID`, `IBLOCK_ID` from `b_iblock_element` where `DETAIL_TEXT` like '%http:%';

В результате вы получите список из ID элементов и ID инфоблоков, в которых эти элементы лежат - остается только пройтись по этим элементам и внести правки.

Для поиска http-ссылок в файлах можно воспользоваться сервером (есил вам повезло и сайт у вас хотя бы на VPS и у вас есть ssh-доступ к файлам сайта). Переходим в корневую папку сайта и запускаем поиск по всем файлам, за исключением файлов ядра:

grep -inR "http://"  --exclude-dir={bitrix,upload,1} --exclude={'*.xml','*.jpg','*.png','*.gif','*.log'} .  > search_res.log

В результате, в корне сайта появится файл search_res.log, в котором будут перечислены все файлы, в которых нужно внести правки (из анализа будут исключены папки ядра, а также файлы с изображениями и логами). После этого можно аналогичный поиск прогнать в папке с шаблоном сайта, чтобы http-ссылок не осталось в шаблонах компонентов или, что еще хуже - в header.php и footer.php



Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку