Чтобы установить бесплатный SSL-сертификат Let’s Encrypt на виртуальную машину с шаблоном Bitrix GT, необходимо выполнить следующие шаги:
1. Зайдите на виртуальный сервер через протокол удалённого доступа SSH:
2. Выпуск SSL-сертификата от Let’s Encrypt выполняется с помощью специальной утилиты certbot. Для установки данной утилиты запустите предустановленный пакетный менеджер yum:
yum install -y certbot
3. Перед выпуском настоящего SSL-сертификата, необходимо обязательно попробовать выпустить его в режиме dry-run (пробный или тестовый прогон). Сделать это можно следующим образом:
certbot certonly --expand -d bitrix-gt.fvds.ru -d www.bitrix-gt.fvds.ru -w /var/www/html --webroot --email [email protected] --agree-tos --dry-run
В примере из статьи генерация пробного SSL-сертификата осуществляется на домен bitrix-gt.fvds.ru
(и его поддомен четвертого уровня — www.bitrix-gt.fvds.ru
). Корневая директория домена — /var/www/html
. Доменное имя, почтовый адрес и корневой каталог вам необходимо изменить на свой.
4. Если в процессе выпуска в режиме dry-run утилита certbot не сообщила о каких-либо проблемах, то можно выпускать реальный SSL-сертификат. Выполните следующую команду:
certbot certonly --expand -d bitrix-gt.fvds.ru -d www.bitrix-gt.fvds.ru -w /var/www/html --webroot --email [email protected] --agree-tos -n
5. Файлы созданного SSL-сертификата от Let’s Encrypt находятся в следующих файлах:
/etc/letsencrypt/live/bitrix-gt.fvds.ru/privkey.pem /etc/letsencrypt/live/bitrix-gt.fvds.ru/fullchain.pem
Откройте конфигурационный файл виртуального хоста и создайте контекст server
для обработки соединений по протоколу HTTPS, как это показано видео ниже:
vim /etc/nginx/bx/site_enabled/s1.conf
В данном примере мы скопировали готовый контекст server
домена bitrix-gt.fvds.ru
. Изменили порт с 80 на 443, включили поддержку SSL и добавили пути к файлам SSL-сертификата. Файл с именем privkey.pem
— это приватный ключ, а файл с именем fullchain.pem
— цепочка SSL-сертификатов.
Возможно, что конфигурационный файл виртуального хоста вашего домена расположен в другом файле (не в файле по умолчанию s1.conf
). Выполните команду ls
на каталог /etc/nginx/bx/site_enabled
и посмотрите, есть ли какие-нибудь файлы с именем вашего домена:
ls /etc/nginx/bx/site_enabled
Если вы обнаружите конфигурационный файл с именем домена, то вам необходимо работать именно с ним.
5.1. Выполнение следующего шага не обязательно и необходимо только в случае, если вы хотите повысить безопасность защищённых соединений. Добавьте в контекст server
(там, где только что настраивали SSL) следующие параметры:
ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
6. Проверьте, что с корректностью синтаксиса Nginx нет никаких проблем:
nginx -t
Если в выводе команды Nginx сообщит вам, что есть синтаксические ошибки, то внимательно проверьте конфигурацию виртуального хоста. Возможно, что где-то не поставили точку с запятой, ошиблись с путями до файлов SSL-сертификата или не поставили закрывающую фигурную скобку контекста server
.
И если всё хорошо и нет синтаксических ошибок, то перезагружайте службу Nginx:
systemctl restart nginx
Теперь ваш сайт может принимать запросы клиентов по защищённому соединению. Проверить корректность установки можно, перейдя на сайт по HTTPS-соединению, или с помощью специализированных ресурсов. Например, sslshopper.com.
7. SSL-сертификат от Let’s Encrypt действителен в течение трёх месяцев. По истечению этого периода его требуется перевыпустить. Автоматизировать процесс перевыпуска можно с помощью планировщика задач Cron. Выполните команду crontab -e
и добавьте планировщику следующее задание:
0 0 1 */3 * certbot renew --force-renewal --quiet --post-hook "systemctl reload nginx.service"
В первый день каждого третьего месяца в 00:00 перевыпускать SSL-сертификат. После успешного обновления, утилита certbot будет выполнять post-hook
на перезагрузку конфигурации Nginx.