Google объявил, что с начала 2017 года все сайты с авторизацией (или формой для ввода данных кредитной карты) будут понижены в поисковой выдаче, если у них нет SSL шифрования. И предупредил, что в скором времени вообще все сайты будут понижаться в выдаче, если у них нет шифрования.
На всех моих серверах стоит Битрикс Окружение, которое помогает ими управлять. И сейчас расскажу как настроить шифрование для сайтов на BitrixEnv.
Покупка сертификата
Первая печальная новость состоит в том, что надо купить SSL сертификат. Он платный и стоит порядка 500 рублей в год. Не вижу смысла покупать серьёзный сертификат для личного блога или даже для какого-нибудь небольшого коммерческого сайта. Поэтому выбираем самое дешёвое, за 500 рублей. Рекомендую брать здесь:
C firstssl.ru познакомился только в этом году, когда первый раз в жизни искал поставщика сертификатов. У них самые низкие цены. Можно купить сертификат за 470 рублей в год, на 3 года.
Для того чтобы настроить шифрование, необходимо получить три файла. Один файл содержит "приватный ключ". Он будет выдан при оформлении заказа SSL-сертификата, а после покупки центр сертификации пришлёт ещё два файла на мэйл администратора сайта. Мэйл должен быть с вашим доменом в конце и довольно специфический в начале, а именно:
- admin@alexgur.ru
- webmaster@alexgur.ru
и так далее. Можно будет при заказе сертификата выбрать куда отправлять. В этом заключается вторая печальная новость. Потому что если не найдёте в списке мэйлов свой адрес, то придётся создавать новый ящик.
Не надейтесь настроить сертификат быстро. Придётся подождать часок-другой пока пришлют файлы. Но в итоге, получите zip-архив, который будет содержать файл самого сертификата ".crt" и цепочку промежуточных сертификатов ".ca-bundle"
Установка сертификата
Буду использовать мой домен alexgur.ru для объяснения, заменяйте его на свой.
Всё нижесказанное будет относится к серверу с установленным BitrixEnv версии 7.0.0. Поэтому настраивать SSL сертификат будем на выдачу с использованием nginx.
Сначала надо соединить основной и промежуточные сертификаты в один файл. Для этого переходим в папку, где они лежат и выполняем команду в терминале:
cat alexgur_ru.crt alexgur_ru.ca-bundle > alexgur_ru_chained.crt
Копируем полученный файл "_chained.crt" и ".key" на сервер, в папку /etc/nginx/ssl/alexgur.ru/ (создайте папку)
Добавляем в файл /etc/nginx/bx/conf/ssl.conf следующие строчки с путями к только что загруженным файлам сертификатов:
ssl_certificate /etc/nginx/ssl/alexgur.ru/alexgur_ru_chained.crt;
ssl_certificate_key /etc/nginx/ssl/alexgur.ru/alexgur_ru.key;
И закомментируйте строки:
# ssl_certificate /etc/nginx/ssl/cert.pem;
# ssl_certificate_key /etc/nginx/ssl/cert.pem;
Перезапустите nginx командой:
service nginx restart
Готово! Сертификат установлен. Можно проверить правильность установки загрузив сайт по https://. Или отправив ссылку на сайт сюда: ssl-checker
Но теперь надо перевести сайт в обслуживание только по https. Чтобы всех посетителей перенаправляло на зашифрованную версию сайта. Для этого войдите в Битрикс окружение, выберите пункт "6. Manage sites in the pool". Затем "5. Change https settings on site". И следуйте инструкциям. Скрипт создаст файл .htsecure в корне сайта. А nginx, распознав этот файл, будет переадресовывать всех с простой версии сайта на защищённую.
Если на сервере несколько сайтов
А вот и третья печальная новость! К сожалению, пока что BitrixEnv 7.0.0 не поддерживает полную настройку SSL сертификатов из своей консоли. Поэтому при наличии нескольких сайтов на сервере придётся извращаться с файлами. Чтобы к каждому сайту применялся свой сертификат. Расскажу как поступил я.
Чтобы настроить несколько сертификатов для разных сайтов на BitrixEnv, необходимо создать копию файла ssl.conf для каждого сайта на сервере, которому надо сделать шифрование. Я обозвал копию ssl_alexgur_ru.conf. Затем надо указать в ней ссылки на сертификаты для конкретного сайта:
ssl_certificate /etc/nginx/ssl/alexgur.ru/alexgur_ru_chained.crt;
ssl_certificate_key /etc/nginx/ssl/alexgur.ru/alexgur_ru.key;
Не забудьте закомментировать строки с "cert.pem", иначе nginx не будет перезапускаться.
Теперь надо отредактировать файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_alexgur.ru.conf . А именно строчку, где идёт подключение файла с параметрами:
# enable SSL connection
# include bx/conf/ssl.conf;
include bx/conf/ssl_alexgur_ru.conf;
Таким образом, все параметры для сертификата сайта alexgur.ru будут браться из файла ssl_alexgur_ru.conf . Проделываем эту процедуру для всех сайтов на сервере, которым нужно сделать шифрование. В результате получаем систему, в которой настройки nginx одного сайта не будут мешать другим сайтам на сервере. Потому что всё хранится отдельно.
Нехорошо делать костыли, поэтому передал службе поддержки Битрикса мои пожелания об автоматизации этого процесса:
Ведь в этом году у вебмастеров будет повальное увлечение установкой SSL сертификатов. И вопросов будет много.