Как установить бесплатный SSL-сертификат Let’s Encrypt для сайта на платформе 1С-Битрикс и не только.
Для работы любого сайта, с недавнего времени, все интернет-браузеры стали требовать SSL-сертификат. Если такового не имеется, браузер выдаст сообщение, что сайт небезопасен и необходимо принять возможные риски перед посещением сайта, либо откажется его загружать сайт вообще.
SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — это протокол асимметричной криптографии для аутентификации ключей обмена, который подразумевает безопасную связь.
Частое использование протокола SSL привело к формированию протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего шифрование. Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивая защиту этих данных. Такой способ защиты широко используется для работы веб-сайтов и приложений.
В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.
Бесплатный SSL-сертификат Let’s Encrypt
Let’s Encrypt — это бесплатный, автоматизированный и открытый Центр Сертификации, созданный некоммерческой организацией Internet Security Research Group (ISRG).
Let’s Encrypt помогает людям выпускать SSL/TLS сертификаты для их сайтов с доступом по HTTPS, бесплатно, максимально облегчая процесс выдачи. Потому что желает сделать интернет безопасным, и уважающим конфиденциальность его пользователей.
На 2022 год насчитывается более 200 000 000 активных сертификатов Let’s Encrypt, актуальную статистику можно найти на сайте организации.
Как установить бесплатный SSL-сертификат Let’s Encrypt
Установить бесплатный SSL-сертификат Let’s Encrypt для веб-сайта на платформе 1С-Битрикс можно различными способами.
Установка SSL-сертификата на обычном хостинге
Если вы используете обычный хостинг, то самый простой способ — заказать установку бесплатного SSL-сертификата самостоятельно через интерфейс личного кабинета с использованием справочных материалов. Если у вас возникли сложности — обратитесь к ИТ-интегратору.
К примеру, для виртуального хостинга от провайдера Timeweb, вам необходимо изучить справочные материалы в статье: Заказ, установка и продление SSL. А затем по инструкции заказать SSL-сертификат для нужного вам домена.
Внимание! Если домен делегирован на NS-сервера другого провайдера, то вам все равно придется получать SSL-сертификат у того провайдера, где он приобретен и обслуживается.
Установка SSL-сертификата на виртуальном сервере VPS / VDS
Для сайтов, работающих на виртуальном сервере VDS / VPS, процедура получения SSL-сертификата несколько сложнее и требует определенной компетенции, так как необходимо использовать командную строку. При отсутствии необходимой компетенции обязательно обратитесь к ИТ-специалисту.
Некоторые хостинг-провайдеры предоставляет возможность использования графической оболочки, например ISPmanager в Timeweb, для управления сервером и сайтами, то вы можете установить SSL-сертификат в личном кабинете оболочки без особых затрат и погружения в серверное администрирование.
Если же хостинг-провайдер, как например Облакотека, не предоставляет возможность использования графических оболочек или вам нужны неограниченные возможности управления сервером, то вам необходимо использовать SSH-клиента для подключения к серверу и интерфейс командной строки CLI для выполнения работ.
Установка SSL-сертификата через меню виртуальной машины VMBitrix
Наиболее простой способ установки бесплатного SSL-сертификата Let’s Encrypt для сайта на платформе 1С-Битрикс: Управление сайтом или 1С-Битрикс24: Корпоративный портал, размещенного на сервере с CentOS — использовать меню виртуально машины VMBitrix, изучив предварительно курс: Виртуальная машина BitrixVM.
Для начала подключитесь к серверу по SSH через простейшую программу PuTTY или через другого SSH-клиента. Мы будем использовать программу Visual Studio Code с расширением Remote — SSH. При подключении к серверу по протоколу SSH используйте IP-адрес сервера и стандартный TCP-порт 22, если он не был изменен системным администратором. Укажите пользователя root или другого пользователя с правами пользователя root и введите пароль.
Внимание! Для подключения к серверу по SSH предварительно проверьте наличие такой возможности и ее активность в личном кабинете хостинг-провайдера. Если у вас нет пароля или имеющийся пароль не подходит, восстановите пароль через личный кабинет или службу поддержки провайдера.
Далее, для перехода к меню виртуальной машины VMBitrix, вам необходимо запустить скрипт командой:
/root/menu.sh
После вам необходимо вводить номера меню в командной строке, после каждого ввода нажимать Enter. Номера меню в следующем порядке: 8. Управление веб-серверами (8. Manage pool web servers) → 3. Настройка сертификатов (3. Configure certificates) → 1. Настройка сертификата Let’s encrypt (1. Configure «Let’s encrypt» certificate).
Затем необходимо вводить данные на соответствующие запросы:
- site name — имя сайта в пулле сайтов виртуальной машины (по умолчанию: default) или несколько имен сайтов, для которых нужно выпустить сертификат(ы) Let’s encrypt, например:
default, abm-it.ru - dns name(s) — все домены и зеркала данного сайта, для которых должен быть выпущен сертификат, включая домен с www и без, вводить несколько доменов через запятую, например:
crm.abm-it.ru, www.crm.abm-it.ru, abm-it.ru, www.abm-it.ru - email for LE notifications — почтовый адрес для уведомлений сервиса Lets Encrypt (на этот адрес придут уведомления об окончании действия срока сертификатов и др.).
В завершении подтвердите ввод, введя «Y» и нажав Enter. Мастер самостоятельно запросит и установит сертификат в течение нескольких минут. Пути SSL-сертификатов будут указаны в этом же разделе.
Проверить успешное выполнение задания вы можете также через меню виртуальной машины, предварительно выйдя в главное меню и выбрав: 10. Фоновые задачи (10. Background pool tasks). При успешном выполнении задания вы увидите статус: finished.
Проверка SSL-сертификата
Бывает, что фоновые задачи не выполняются успешно и имеют статус «error». В таком случае необходимо проверить, корректно ли вы ввели все данные и повторить процедуру.
Для проверки SSL-сертификата используйте команду:
openssl s_client -connect domain.name:443
Проверить работу сайта по HTTPS-протоколу можно командой:
curl -v https://domain.name:443
В случае успеха вы увидите код сайта. В случае проблем вы увидите уведомление об ошибке.
В графическом интерфейсе также можно проверить SSL-сертификат, используя веб-сервисы, например: sslshopper.com. Перейдя по ссылке введите свой домен и нажмите Check SSL, в результате проверки вы увидите отчет с цепочкой сертификатов и успешными статусами, либо с ошибками в каком-либо сертификате.
Если ошибка повторяется и вам не удается определить и исправить проблему, обратитесь к опытному ИТ-специалисту.
Установка SSL-сертификата через Certbot
Но что же делать, если у вас не используется виртуальная машина VMBitrix, а сайт установлен на чистую операционную систему CentOS? Или у вас никак не выходит воспользоваться меню виртуальной машины для установки SSL-сертификатов?
Вы можете установить SSL-сертификат, используя Certbot — бесплатный программный инструмент с открытым исходным кодом для автоматического использования сертификатов Let’s Encrypt на веб-сайтах, администрируемых вручную, для включения HTTPS.
Установка snapd
Подключитесь по SSH на сервере с привилегиями sudo и установите snapd. Snap доступен для CentOS 8 и CentOS 7, начиная с версии 7.6. Он также доступен для Red Hat Enterprise Linux (RHEL) 7.6+. Если вам нужно знать, какую версию CentOS вы используете, введите:
cat /etc/centos-release
Если у вас еще нет репозитория EPEL для CentOS 7, его можно добавить с помощью следующей команды:
sudo yum install epel-release
Когда репозиторий EPEL добавлен в вашу установку CentOS, установите пакет snapd:
sudo yum install snapd
После установки включите модуль systemd, который управляет основным сокетом мгновенной связи:
sudo systemctl enable -now snapd.socket
Создайте символическую ссылку между /var/lib/snapd/snap и /snap, выполнив команду:
sudo ln -s /var/lib/snapd/snap /snap
Далее либо выйдите из системы и снова войдите, либо перезапустите систему, чтобы убедиться, что пути привязки обновлены правильно, выполнив команду:
reboot
Snap теперь установлен и готов к работе.
Если у вас есть какие-либо пакеты Certbot, установленные с помощью диспетчера пакетов apt, dnf или yum, вы должны удалить их, чтобы гарантировать, что при запуске команды certbot используется привязка, а не установка из пакетного менеджера вашей ОС. Точная команда для этого зависит от вашей ОС, пример:
sudo yum remove certbot
Если вы ранее использовали Certbot через сценарий certbot-auto, вам также следует удалить его установку, выполнив команды:
sudo sed -i '/certbot-auto/d' /etc/crontab
sudo rm /usr/local/bin/certbot-auto
sudo rm -rf /opt/eff.org
Установка Certbot
Чтобы установить Certbot, выполните команду:
sudo snap install -classic certbot
Далее убедитесь, что команда certbot может быть запущена:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbot установлен и готов к работе.
Установка SSL-сертификатов
Чтобы получить сертификаты с автоматическим изменением конфигурации Nginx и включением доступа HTTPS за один шаг, выполните эту команду:
sudo certbot -nginx
Далее выведется список доменных имен, пример:
1: abm-it.ru
2: www.abm-it.ru
3: crm.abm-it.ru
4: www.crm.abm-it.ru
Выберите нужные и перечислить их номера через запятую. Либо оставьте поле ввода пустым, чтобы выбрать все предложенные домены.
Если нужного домена нет в списке проверьте алиасы в файлах конфигурации httpd. Например при использовании VMBitrix файл будет иметь путь: /etc/httpd/bx/conf/bx_ext_[название_сайта].conf — находим его и дописываем алиасы через пробел:
ServerName abm-it.ru
ServerAlias www.abm-it.ru crm.abm-it.ru www.crm.abm-it.ru
Далее ищем файл конфигурации Nginx, для VMBitrix по пути: /etc/nginx/bx/site_avaliable/bx_ext_[название_сайта].conf или в /etc/nginx/bx/site_avaliable/s1.conf и также дописываем алиасы через пробел:
server {
listen 80;
server_name abm-it.ru www.abm-it.ru crm.abm-it.ru www.crm.abm-it.ru;
Затем проверьте файлы на наличие ошибок:
httpd -t
nginx -t
Если вышло уведомление об ошибках, исправьте их. Далее перезагрузите службы httpd и Nginx командами:
service httpd restart
service nginx restart
Обновление и изменение SSL-сертификатов
Certbot автоматически обновит SSL-сертификаты до истечения срока их действия, выполнив задание на планировщике cron. Вам не нужно будет снова запускать Certbot, если вы не измените свою конфигурацию.
Вы можете протестировать автоматическое продление своих сертификатов, выполнив команду:
sudo certbot renew -dry-run
Если эта команда завершится без ошибок, ваши сертификаты будут автоматически обновляться в фоновом режиме.
Если необходимо изменить конфигурацию, то вы можете вручную обновить SSL-сертификаты, повторно выполните команду:
sudo certbot -nginx -v
Далее на запрос «What would you like to do?» выберите «2: Renew & replace the certificate (may be subject to CA rate limits)» и сертификаты будут обновлены.
Обновление корневых сертификатов на Linux
Если у вас корректно установились сертификаты и успешно проходят проверку, но при этом наблюдаются проблемы, в том числе с сокетами, возможно вам следует обновить корневые сертификаты на Linux, для этого выполните команду:
yum update -y ca-certificates
После этого проблема с сокетами должна уйти.
Если же проблему с сокетами устранить не удалось или у вас возникли другие проблемы, обратитесь к ИТ-специалистам.