В последнее время очень участились запросы на настройку сайтов на https-защиту.
Для специалиста в администрировании серверов это простое дело, а вот для всех остальных, данный процесс может быть очень даже не простым. Попробую в общих чертах обрисовать процесс добавления сертификата для сайта, размещенного на виртуальной машине 1С-Битрикс (для варианта, когда сайт установлен как дополнительный для веб-окружения).
Перед началом работ по переносу сайта с http на https убедитесь, что у вас на сайте отсутствуют абсолютные ссылки. Чаще всего такое встречается в текстах, которые прописывают контент-менеджеры - они обычно тексты пишут в каком-то текстовом процессоре, а потом просто копируют в редактор. При этом ссылки все остаются с указанием протокола и домена. Тут нужно или глазами просматривать, или писать скрипт проверки - все индивидуально.
Для начала получаем сертификат. Где вы будете брать сертификат и какой лучше выбрать - это оставлю за кадром - в сети очень много информации по данному вопросу. Для установки SSL в nginx потребуются следующие файлы: коренвой сертификат (root), сертификат посредника (intermediate) и непосредственно сам сертификат для домена.
Перейдем сразу к процессу создания сертификата. Будем считать, что вы выбрали обычный сертификат с проверкой одного домена.
Итак, вы начинаете генерацию сертификата. На первом же шаге система вам генерирует ключ (обычно он показывается в простом текстовом поле и подразумевается само собой, что вы должны его скопировать себе и сохранить). Это ваш секретный ключик, который нужно! сохранить - без него все, что дальше - бесполезно!
На основании этого, сохраненного вами ключа будет сгенерирован сертификат для вашего домена (или доменов), который, скорей всего, будет выслан вам на контактный e-mail, но, возможно, также будет и ссылка на скачивание прямо в панели.
Будем считать, что ключик у вас уже есть (самое главное, есть личный ключ, который сохраняем в виде: domain_ru.key). Нас интересуют всего 2 файла: domain_ru.crt и domain_ru.key.
Авторизуемся в веб-окружении под root-пользователем. Создаем папку (_cur_date_domain_ - пометка с текущей датой и доменом, если на сервере несколько доменов заведено):
mkdir ~/_cur_date_domain_
В данную папку заливаем наши файлы с сертификатом.
Дальше, эти 2 файла нужно объединить в один общий (также с пометкой даты создания, чтобы потом было проще менять на новый):
cat domain_ru.key domain_ru.crt domain_ru.ca-bundle >> domain.ru_cur_date.pem
domain_ru.ca-bundle - цепочка сертификатов от сервера лицензий. Более подробно про то, какие сертификаты объединять, можно почитать тут
И копируем полученный файл в список сертификатов сервера:
cp domain.ru_cur_date.pem /etc/nginx/certs/domain.ru_cur_date.pem
Дальше открываем меню виртуальной машины и переходим в раздел управления сертификатами (Manage web nodes in the pool - Configure certificates - Configure own certificate). Вводим название сайта. Т.к. файл с сертификатом мы положили в папку /etc/nginx/certs/ то мы можем не писать полный путь, а указать лишь относительный путь от данной папки. Поэтому, при запросе сертификатов прописываем просто название нашего сгенерированного файла.
Либо можно прописать сертификат вручную. Для этого нужно изменить файл сертификата
/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://you.site/catalog/section/product/ нужно заменить на /catalog/section/product/ , т.е. ссылки без указания протокола и доменного имени. Заменить нужно том числе и все ссылки на медиаконтент (изображения, документы, видео, файлы стилей, файлы js-скриптов, подключение разных внешних сервисов).
- После переезда на https - нужно настроить 301-й редирект со старого протокола на новый, проверить, чтобы все ссылки на сайте имели корректный формат, все канонические ссылки были заменены, ссылки в карте сайта были заменеы
- Пройтись по разным типовым страницам сайта и проверить, чтобы адресная строка подсвечивалась зеленым цветом - если это так, то вы все сделали верно.
Но как же искать эти все 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
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.