Установка SSL-сертификата на 1С-Битрикс. Настройка битрикс https


SSL на 1С-Битрикс: Веб-окружение

Для некоторых платёжных систем, таких как Яндекс Касса и прочих подобных, требуется наличие SSL сертификата. Ваш сайт должен без ошибок и предупреждений открываться по протоколу https:// (Например: https://ВАШ_САЙТ.ru). Так-же по некоторым сведениям такие сайты лучше ранжируются в поисковых системах.

Если сайт запущен на «1С-Битрикс: Веб-окружение» - Linux , сделать это очень даже легко.

Получение SSL сертификатов

Для начала получаем сертификаты у любой компании. Сертификаты бывают на физическое лицо, как правило стоят не дорого порядка 1000 руб. в год и просты в получении и на компанию. Сертификат на компанию стоит дороже и как правило с ним очень много заморочек при получении, но это не суть дела.

Установка сертификатов

После покупки и оформления сертификата получаем несколько файлов, самые важные файлы это Секретный ключ (*.key) и собственно сам сертификат на доменное имя (ВАШ_САЙТ.crt), так же могут быть ещё файлы с расширением *.crt Создаём папку “serts” копируем туда файл ключа (*.key) и сертификатов (*.crt) и загружаем эту папку по протоколу SFTP на сервер в корневую папку “/root/”.

Подключаемся к серверу по SSH и выполняем команды:

cd /root/serts/ - заходим в папку cat ПРИВАТНЫЙ_КЛЮЧ.key ВАШ_САЙТ.crt ВАШ_САЙТ_Root.crt >> ВАШ_САЙТ.pem - объединяем файлы сертификатов и ключ в файл .pem cp /root/serts/ВАШ_САЙТ.pem /etc/nginx/ssl/ВАШ_САЙТ.pem - скопируем pem в рабочую папку сертификатов nginx.

Далее нужно открыть файл /etc/nginx/bx/conf/ssl.conf , можно через терминал или просто по SFTP и примерно, в 16 и 17-ю строки прописываем пути к файлу pem, где находятся сертификаты и ключ.

ssl_certificate /etc/nginx/ssl/ВАШ_САЙТ.pem; ssl_certificate_key /etc/nginx/ssl/ВАШ_САЙТ.pem;

Должно получиться примерно так:

Cохраняем изменения и перезагружаем nginx командой:

service nginx restart

После успешной перезагрузки NGINX, ваш сайт должен открываться по адресу https://ВАШ_САЙТ.ru без каких-либо уведомлений о возможной опасности, а рядом со ссылкой в идеале должен появиться зелёный замочек.

Если на некоторых страницах сайта зелёного замка нет, значит смотрите конфликты в коде самого сайта: к примеру присутствуют http:// ссылки на другие ресурсы

Неверно: href='http://fonts.googleapis.com/css?family….. type='text/css'

Верно: href='https://fonts.googleapis.com/css?family…….. type='text/css'

Заключение

Чтобы поисковые системы не считали сайт работающий по http и https протоколам дублями отключаем работу протокола http.

Администрирование -> Управление масштабированием -> Панель управления -> Глобальные действия -> Отключить http

Протокол http отключен теперь если вы введёте в адресной строке http://ВАШ_САЙТ.ru автоматический произойдёт переадресация на защищённое соединение https://ВАШ_САЙТ.ru

miditator.ru

Полная инструкция по настройке HTTPS с оценкой А+

HTTPS – протокол, обеспечивающий безопасность и конфиденциальность при обмене информацией между сайтом и устройствами пользователей. Он шифрует данные, которые пользователь указывает, например в веб-формах, чтобы оформить заказ, авторизоваться или отправить сообщение. В отличии от http-страниц, их данные можно прочитать любым из серверов, который на пути от веб-сайта до пользователя.

Опубликованный недавно закон о персональных данных так же требует переход на безопасный протокол.

А при ранжировании сайта поисковыми системами использование этого протокола расценивается как положительный фактор, поэтому желательно начать использовать https.

В нашем примере мы рассмотрим настройку https протокола для любой платформы и веб-сервера, но так же расмотрим ньюансы настройки для php-fpm и платформы Bitrix, так как именно бизнес-сектор интернета чаще всего нуждается в этом протоколе.

Что мы имеем

Nginx - веб-сервер, который мы используем для проксирования трафика и распределения нагрузки между нашими виртуальными площадками, будем называть его Nginx Proxy.

Nginx + php-fpm - в своих проектах мы давно отказались от веб-сервера apache и полностью заменили его на связку nginx + php-fpm, так как работает во много раз быстрее и нет никакой путаницы в конфигах, называть этот веб-сервер мы будем Nginx Site.

SSL сертификат с приватным ключем - файл с расширением crt и ключ с расширением key.

Цепочка сертификатов - цепочка доверия, структура, которая позволяет людям проверять валидность сертификата эмитента.

Ключ Диффи — Хеллмана - необходим для работы Forward Secrecy, сгенерируем его позднее на сервере.

Немного времени

Получение сертификата

Все сертификаты разделяются по двум критериям: центру сертификации и опциям заложенным в него. Центр сертификации не играет никакой роли в выборе, важно выбрать протокол с необходимыми опциями, например некоторые сертификаты выпускаются только для юридических лиц, Business сертификаты, они требуют подтверждения учредительной информации.

Другие важных опции: EV - добавляет зеленый значек в строке браузера, не несет никакой дополнительной безопасности, просто заметна для пользователя. WildCard - позволяет использовать сертификат не только для искомого домена и поддомена www, но и для всех субдоменов.

Выбранные опции серьезно сказываются на стоимости сертификата, поэтому лучше взвесить все за и против, и выбрать оптимальный вариант. Для интернет-магазинов мы чаще всего используем Thawte SSLWebServer, банковского и страхового сектора GeoTrust True BusinessID EV, для всех остальных сайтов RapidSSL

Шаг 1. Заказываем сертификат.

Когда сертификат и регистратор, лучше использовать тот же, где и куплен домен, выбран, указываем доменное имя и заполняем анкету в панели заказа сертификата, оплачиваем.

Шаг 2. Подтверждение.

Для RapidSSL, где подтверждается только право владение почтовым адресом, мы получаем письмо с ссылкой, переходим по ней и все, сертификат подтвержден. Для сертификатов с расширенной проверкой потребуется еще загрузить документы организации или паспорт.

Шаг 3. Получение готового сертификата.

Некоторые центры присылают сертификат по почте, а ключ необходимо уже скачивать на сайте регистратора, там, где производили оформление заказа.

Установка сертификата

Так как у нас проксирующий nginx, то устанавливать сертификат нужно именно на него, Nginx Proxy.

Шаг 1. Создаем папку с сертификатами:

cd /etc/nginx/ mkdir ssl cd ssl mkdir onlinebd.ru

Шаг 2. Переносим сертификаты и ключ в папку (не оставляем переносы строк после последнего символа):

cd onlinebd.ru nano onlinebd.crt # вставляем сертификат и сохраняем Ctrl+X nano private.key # вставляем ключ и сохраняем Ctrl+X

Шаг 2.1. Возможно, что ваш приватный ключ зашифрован паролем, пароль можно найти там же, где и скачали этот ключ, у регистратора. Такой ключ необходимо преобразовать:

openssl rsa -in private.key -out private_new.key # вводим пароль mv private.key private.nokey mv private_new.key private.key

Шаг 3. Скачиваем цепочку сертификатов для RapidSSL. Иногда сертификаты цепочки приходят вместе с сертификатом сайта или их можно найти на сайте центра сертификации:

wget https://www.websecurity.symantec.com/content/dam/websitesecurity/support/digicert/rapidssl/ica/RapidSSL_RSA_CA_2018.pem wget https://www.websecurity.symantec.com/content/dam/websitesecurity/support/digicert/rapidssl/root/DigiCert_Global_Root_CA.pem

Шаг 4. Создаем бандл, bundle.crt, файл который содержит в себе сертификат сайта и сертификаты цепочки. Лучше не добавлять в него Root сертификат, он не имеет никакой цели, увеличивает задержку квитирования и можно получить ошибку на ssllabs: Chain issues: Contains anchor, поэтому добавляем только Intermediate.

# последовательность файлов должна быть именно такой: сертификат сайта -> Intermediate -> Root (если используется) cat onlinebd.crt RapidSSL_RSA_CA_2018.pem > bundle.crt

Шаг 5. Генерируем dhparam.pem, позволяет реализовать прямую секретность, Forward Secrecy, если третья сторона узнает какой-либо сеансовый ключ, тогда возможно будет получить доступ лишь к данным, защищенным этим ключом.

openssl dhparam -out /etc/nginx/ssl/onlinebd.ru/dhparam.pem 4096

Настройка nginx

Есть замечательный сайт от Mozilla https://mozilla.github.io/server-side-tls/ssl-config-generator/, на котором генерируется конфиг для любого веб-сервера и набора браузеров. Для набора браузеров рекомендую использовать вариант Intermediate, он содержит все используемые на текущий момент браузеры, точнее поддерживаемые методы шифрования, для Modern варианта еще время не пришло.

У меня получился вот такой конфиг, немного измененный:

# Добавляем 301 редирект, если у нас запросят сайт по HTTP протоколу server { listen 80; server_name onlinebd.ru www.onlinebd.ru; return 301 https://onlinebd.ru$request_uri; } # Добавляем 301 редирект, если у нас запросят сайт по www субдомену и протоколу HTTPS server { listen 443 ssl http2; server_name www.onlinebd.ru; # сертификаты в этом редиректе обязательны, остальные параметры можно не указывать ssl_certificate /etc/nginx/ssl/onlinebd.ru/bundle.crt; ssl_certificate_key /etc/nginx/ssl/onlinebd.ru/onlinebd.key; return 301 https://onlinebd.ru$request_uri; } server { # добавляем еще протокол http2, бывший spdy, ускоряет открытие страниц # но может привести к проблемам с медийным контентом: ERR_SPDY_PROTOCOL_ERROR listen 443 ssl http2; server_name onlinebd.ru; access_log off; #access_log /var/log/nginx/onlinebd.ru.access.log; error_log /var/log/nginx/onlinebd.ru.error.log; # SSL конфигурация ssl on; # ssl_stapling позволяем серверу прикреплять OCSP-ответы, уменьшая время загрузки страниц ssl_stapling on; ssl_stapling_verify on; # наши сертификаты ssl_certificate /etc/nginx/ssl/onlinebd.ru/bundle.crt; ssl_certificate_key /etc/nginx/ssl/onlinebd.ru/onlinebd_private.key; ssl_dhparam /etc/nginx/ssl/onlinebd.ru/dhparam.pem; # настройка сессии ssl_session_tickets off; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; # используемые протоколы и методы шифрования ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; # принуждаем строго соблюдать указанные методы шифрования ssl_prefer_server_ciphers on; # сколько браузерам помнить данные о требованиях безопасности add_header Strict-Transport-Security max-age=31536000; # проксируем данные на нужную виртуальную площадку location / { # параметры проксирования proxy_send_timeout 600; proxy_read_timeout 600; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; # лучше указать передачу заголовков, они так же есть в fastcgi_params, который подключается в nginx.conf proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header HTTPS YES; # IP-адрес целевой виртуальной площадки proxy_pass http://192.168.1.108; } }

Ньюансы работы c проксированием

В конфиге Nginx Site, веб-сервера сайта, нам необходимо указать, что сайт работает по протоколу https.

Для сайта на Grav:

location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_param REMOTE_ADDR $http_x_real_ip; # параметры https fastcgi_param HTTPS on; fastcgi_param HTTP_HTTPS on; fastcgi_param REQUEST_SCHEME https; fastcgi_param SERVER_PORT 443; }

Так же для сайта на Grav необходимо указать опцию в конфиге system.yaml:

force_ssl: true

Для сайта на Битрикс:

location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/www.sock; try_files $uri @bitrix; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REMOTE_ADDR $http_x_real_ip; # параметры https fastcgi_param HTTPS on; fastcgi_param HTTP_HTTPS on; }

Для всех сайтов никак не удалось добиться изменение глобальной переменной $_SERVER['HTTPS'], параметр fastcgi_param HTTPS on; меняет только переменную $_SERVER['HTTP_HTTPS']. Для решения этой проблемы есть несколько вариантов:

Вариант 1. Если на сервере Nginx Site работает только один сайт, можно поменять переменную env[HTTPS] = 'on' в конфиге php.fpm, он находится в файле /etc/php-fpm.d/www.conf

Вариант 2. (для Битрикс) Работает для любого количества сайтов и при многосайтовости, где не все сайты на http. Добавляем в dbconn.php строчки:

if ($_SERVER['HTTP_HTTPS'] == 'YES') { $_SERVER['HTTPS'] = 'YES'; }

Проверить получившийся результат можно на сайте: https://www.ssllabs.com/ssltest/

Успехов и безопасности вам!

Пожалуйста, включите JavaScript, чтобы просмотреть комментарии ведет Disqus.

onlinebd.ru

Установка SSL-сертификата на СМS "1С-Битрикс"

Генерация CSR-запроса и заказ SSL-сертификата

Для установки SSL-сертификата вашего веб-сайта в CMS 1C-Битрикс необходимо сперва сгенерировать CSR-запрос и заказать SSL-сертификат через панель управления 1cloud. Так как система управления интернет проектами "1С-Битрикс" работает под управлением дистрибутива Linux CentOS, то для генерации CSR-запроса вы можете воспользоваться общей инструкцией для Linux (см. перечень команд для CentOS). 

После генерации CSR-запроса и заказа SSL-сертификата через панель управления 1cloud необходимо установить полученные сертификаты .CRT и .CA на сервер 1C-Битрикс. 

После получения SSL-сертификата файлы для его установки появятся в панели управления 1cloud (меню SSL):.CA - файл цепочки сертификатов Центра Сертификации (Certificate Authority)..CRT - файл сертификата для вашего сайта (сайтов).

Загрузка необходимых файлов на веб-сервер

Прежде всего, необходимо загрузить представленные в панели 1cloud файлы .ca и .crt на веб-сервер 1С-Битрикс. Самый простой способ - загрузить эти файлы на другой компьютер, а затем перенести их на сервер одним из приведенных ниже способов.

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

Перенос сертификатов с компьютера Linux/Mac OS:

Самый простой способ загрузки сертификатов на сервер - опция SCP, встроенная в возможность терминала вашего компьютера:

  1. Загрузите файлы .CA и .CRT из панели управления 1cloud на локальный компьютер.
  2. Откройте терминал и перейдите в папку, в которую вы сохранили сертификаты (напр., Downloads):cd ~/Downloads Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:scp crt.crt ca.crt [email protected]:/etc/sslГде:scp - команда копирования файловmydomain.ru_crt.crt - имя загруженного из панели файла сертификата вашего веб-сайтаmydomain.ru_ca.crt - имя загруженного из панели файла сертификата Центра Авторизацииuser - имя вашего пользователя для подключения к серверу через ssh (часто используется root)1.22.33.444 - IP-адрес вашего веб-сервера/etc/ssl - директория на удаленном сервере, в которую в хотите сохранить загружаемые файлы.

Перенос сертификатов с компьютера Windows:

  1. Установите программу WinSCP. Скачать ее можно здесь.
  2. Запустите WinSCP. В открывшемся окне введите данные, которые  вы используете для подключени я к вашему серверу по SSH. В левой части окна программы отображаются файлы на локальном компьютере, в правой - на подключенном удаленном сервере. Выберите или создайте директорию, в которую вы хотите сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

Примечение: для удобства в дальнейшем рекомендуем перенести файл закрытого ключа (.key) в ту же директорию, в которую вы скопировали файлы сертификатов. Вы можете не делать этого, но таком случае запомните путь до этого файла и в дальнейшем укажите его в файле конфигурации Apache вместо пути, приведеленного в нашем примере.

Если закрытый ключ .key был сгенерирован непосредственно на сервере, то для его копирования в другую директорию вы можете использовать команду:cp /home/root/private.key /etc/ssl/private.keyГде:cp - команда копирования/home/root/ - путь до файла ключаprivate.key - имя файла ключа/etc/ssl/private.key - путь, по которому необходимо скопировать файл ключа

Удалить файл ключа из старого расположения вы можете с помощью команды:rm /home/root/private.key (синтаксис команды аналогичен предыдущему примеру)

Настройка сервера 1C-Битрикс на использование SSL-сертификата

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

  1. После подключения к серверу отобразится консоль 1С-Битрикс с доступными действиями (Available Actions). Сейчас нам нужна не она, а непосредственно командная строка CentOS. Нажмите 0 для перехода в нее.
  2. Объедените загруженные на сервер ранее файлы сертификата Центра Сертификации (.CA) и сертификата вашего веб-сайта (.CRT) в один документ:cat /etc/ssl/mydomain.ru_crt.crt /etc/ssl/mydomain.ru_ca.crt >> mydomain.crt
  3. Откройте файл конфигурации ssl.conf:nano /etc/nginx/bx/conf/ssl.confПримечание: если редактор nano не установлен на вашем сервере, вы можете установить его с помощью команды yum install nano
  4. В открытом файле отредактируйте пути до загруженных ранее файлов сертификатов:ssl_certificate /etc/ssl/mydomain.crt; ssl_certificate_key /etc/ssl/private.key;Где:/etc/ssl/mydomain.crt - путь до файла сертификатов вашего сайта и центра сертификации/etc/ssl/private.key - путь к файлу вашего закрытого ключа

    Пример файла ssl.conf:

    # If they come here using HTTP, bounce them to the correct scheme # Nginx internal code used for the plain HTTP requests # that are sent to HTTPS port to distinguish it from 4XX in a log and an error page redirection. error_page 497 https://$host$request_uri;

    # Increase keepalive connection lifetime keepalive_timeout    70; keepalive_requests    150;

    # SSL encryption parameters ssl                     on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESG$ ssl_prefer_server_ciphers on;

    ssl_certificate         /etc/ssl/mydomain.crt; ssl_certificate_key     /etc/ssl/private.key;

    # performance ssl_session_cache    shared:SSL:10m; ssl_session_timeout     10m;

  5. Теперь нужно активировать опцию SSL в консоли управления 1C-Битрикс. Для этого отключитесь от сервера, а затем повторно подключитесь к нему по SSH.  В открывшейся консоли Available Actions вводим 6 (Manage sites in the pool), а затем 5 (Change https settings on sites). Если на вашем сервере Битрикс установлен только один веб-сайт, можно просто нажать Enter в ответ на запрос имени сайта (Enter site name). Если же сайтов несколько, введите название веб-сайта, для которого вы устанавливаете SSL-сертификат и нажмите Enter. В ответ вам будет предложено отключить доступ по HTTP (незащищенному протоколу) для данного сайта. Если вы хотите сохранить такой доступ, нажмите n. Если вы хотите, чтобы сайт теперь был доступен только по защищенному протоколу https, нажмите Y.

  6. Перезагрузите сервер:reboot

Проверка настроек

На этом процедура установки SSL-сертификата на CMS 1С-Битрикс завершена. Для проверки корректности настроек откройте откройте ваш-веб сайт в браузере по протоколу https (например, https://mydomain.ru). Если сертификат установлен корректно, в адресной строке вашего браузера вы увидите иконку замка, при клике на которую будет отображена информация о приобретенном вами SSL-сертификате. 

 

P. S. Другие инструкции:

Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже

1cloud.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта