Пользователь 46342 Постоянный посетитель Сообщений: 184 |
Добрый день, господа: При выписывании ssl от Let;s Encrypt внтури машины ошибка в статусе: TASK [web : register dehydrated] *********************************************** Везде искала это:ERROR: API version 1 is no longer supported, не нашла. Кто может перевести? Предыстория: меняли имя хоста вот по такой инструкции, т.к. штатными средствами не получилось и ssl пытался выписаться на прошлое имя хоста: https://dev.1c-bitrix.ru/support/forum/forum32/topic90229/ |
Надежда Неверова, а версия VM какая? |
|
Пользователь 1854721 Заглянувший Сообщений: 16 |
https://twitter.com/acme_dehydrated/status/1102320683747602433
dehydrated обновился 20 часов назад, в нем убрали API v1 |
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#4 0 04.03.2019 22:11:53
Дайте точную ссылочку, пожалуйста. |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#5 0 05.03.2019 01:07:46
всегда обновляем до последней, так что даже забываю указывать)) |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#6 0 05.03.2019 01:14:03
Вот эту инструкцию нашла, прошу прокомментировать https://linux-notes.org/ustanovka-certbot-dlya-polucheniya-sertifikata-ot-letsencrypt-v-unix-linux/ И будет ли что-то в новых релизах vmbitrix, как думаете. |
||
Пользователь 180446 Эксперт Сообщений: 684 |
Здесь правильный хост /home/bitrix/dehydrated/certs ? |
Пользователь 1854721 Заглянувший Сообщений: 16 |
#8 0 05.03.2019 10:25:42
https://certbot.eff.org/lets-encrypt/centosrhel7-nginx только нужно будет домен в nginx вписать |
||||
Алексей Шафранский
Администратор Сообщений: 1019 |
#9 0 05.03.2019 13:38:35
Надежда Неверова, день добрый. Разработчик dehydrated одумался и вернул обратно AIP v1. Только что попробовал выпуск сертификата — сработало. https://github.com/lukas2511/dehydrated/commits/master И по ней видно: |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#10 0 06.03.2019 10:30:54
Круто! Пойду пробовать. |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#11 0 06.03.2019 10:50:06
Да, правильный, новый. |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#12 0 06.03.2019 10:51:57 TASK [web : create certificates] *********************************************** NO MORE HOSTS LEFT ************************************************************* PLAY RECAP ********************************************************************* |
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#13 0 06.03.2019 11:01:27 Не понять , вроде выписывает, вот кусок лога ERROR: Problem connecting to server (get for http://apps.identrust.com/roots/dstrootcax3.p7c ; curl returned with 7) http://cert.int-x3.letsencrypt.org |
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#14 0 06.03.2019 11:42:47 У меня уже 2 набора сертификатов в папке)Что посоветуете ждать или курить мануал по manually continue on creating and linking all necessary files? |
Пользователь 180446 Эксперт Сообщений: 684 |
#15 0 06.03.2019 13:16:47
Так, а теперь покажи /etc/nginx/bx/site_avaliable/ssl.s1.conf |
||||
#16 0 06.03.2019 15:26:19 Надежда Неверова, а у вас снаружи доступ к серверу есть? |
|
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#17 0 07.03.2019 13:26:32
more /etc/nginx/bx/site_avaliable/ssl.s1.conf # Enable SSL connection proxy_set_header X-Real-IP $remote_addr; set $proxyserver « http://127.0.0.1:8888" ;; index index.php; # Include parameters common to all websites # Include server monitoring API’s |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#18 0 07.03.2019 13:27:40
Да, есть. По http. И другие необходимые порты открыты и проброшены. |
||
Пользователь 180446 Эксперт Сообщений: 684 |
#19 0 07.03.2019 15:25:33 Добавь это со своим доменом
После
|
||||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#20 0 12.03.2019 08:11:47
После этого вообще все перестает работать))) Прошу пояснить вашу инструкцию немного, кое-что непонятно. 1) include bx/conf/ssl_options.conf; 2) ssl_certificate /home/bitrix/dehydrated/certs/[domain]/fullchain.pem; по этому пути лежат файлы сертификатов (все 3 выписанных набора), но они выглядят так: cert-1551857572.pem Добавление с точными именами не помогло, кстати, тоже. |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#21 0 12.03.2019 08:21:16 Почему вообще возникла ERROR: Walking chain has failed…. |
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#22 0 12.03.2019 08:49:20
Алексей, а какая версия машины у вас? |
||
Алексей Шафранский
Администратор Сообщений: 1019 |
#23 0 12.03.2019 11:22:47
Надежда Неверова, 7.3.4 |
||
Пользователь 46342 Постоянный посетитель Сообщений: 184 |
#24 0 13.03.2019 08:52:37
У нас ERROR: Walking chain has failed…. уже предельное число сертфикатов выписано, они валяются в папке, и советы выше не помогают. Переустановка машины как-то поможет? |
||
Пользователь 1706659 Заглянувший Сообщений: 11 |
#25 0 14.03.2019 03:58:17 Надежда Неверова, http://apps.identrust.com/roots/dstrootcax3.p7c доступен в ВМ ? |
Не перевыпускаются сертификаты letseycrhpt на Bitrix VM 7.3.(0-3)
Код ошибки: DLG_FLAGS_SEC_CERT_DATE_INVALID
Такую ошибку я видел уже несколько раз на серверах клиентов и всегда она ставила их в тупик, поскольку выдачей сертификатов занимается сама VM
Если у вас сертификат не смог обновиться то проверим смело:
- Удалите старые сайты, А запись которых не ведет на этот сервер, но сертификат пытается выпуститься на этом сервере.
- Убедитесь что ААА — запись отсутствует, letsencrypt не поддерживает эту запись
- Убедитесь что для домена www есть А запись и она отдается с этого же сервера.
- У вас есть место на сервере.
- Вы уже создали 5 раз за неделю сертификат.
Если сертификат генерируется но не применяется, сразу смотрим патч внизу.
Если все вышесказанное уже сделано, то смотрим как генерируется сертификат в Bitrix VM 7.
В /etc/letsencrypt ничего нет. Так же ничего нет в crontab, да и вообще certbot тоже нет.
В Bitrix VM 7 используется dehydrated
Запустим генерацию сертификатов аналог certbot renew
cd /home/bitrix/dehydrated/ && ./dehydrated -c
Смотрим на чем встала генерация, и исправляем.
В том же каталоге лежит файл со списком доменов для обновления /home/bitrix/dehydrated/domains.txt
Убедимся что ничего не сломалось
nginx -t
Все что нам остается это применить сертификаты.
nginx -t && nginx -s reload
или
systemctl reload nginx
Иногда сертификаты сгенерированны, и установлены, но не примерились автоматически.
Если такая ситуация повторяется просто поставьте на крон применение сертификатов.
* */12 * * * /usr/sbin/nginx -t && /usr/sbin/nginx -s reload >/dev/null 2>&1
Ну и если это не помогло а ошибок при генерации сертификатов уже нет, то пересоздадим сертификат заново в меню VM 8 -> 3 ->1 ( и на вопрос о перегенерации отвечаем да) ждем минуту а желательно открываем в инкогнито и проверяем.
Где и что смотреть
Запустить генерацию letsencrypt сертификата с консоли:
sudo -u root /opt/webdir/bin/bx-sites -a configure_le --site "site.ru" --email "le@site.ru" --dns "site.ru www.site.ru" -o json
Лог генерации битрикс вм:
/opt/webdir/temp/номер вашей задачи
Лог генерации сертификата:
/home/bitrix/dehydrated_update.log
Сами сертификаты:
/home/bitrix/dehydrated/certs
Так же из-за способа проверки валидности сертификата самой вм, возможна ошибка
"type": "urn:acme:error:rateLimited", "detail": "Error creating new cert :: too many certificates already issued for exact set of domains: site.ru,www.site.ru: see https://letsencrypt.org/docs/rate-limits/", "status": 429
Возникнуть она может по двум причинам
— Вы действительно слишком часто его создавали
— Алгоритм обновления сертификата дожидается валидного завершения от ВСЕХ сайтов! При том он их действительно принудительно пере создает (даже валидные сертификаты).
Как следствие сертификат может быть даже реально создан, но поскольку ожидается код завершения по всем сертификатам на сервере и какой-то из них ошибочный то ни один из сертификатов не примерится, даже если он реально нормальный.
Тех поддержка обещала исправить баг в коде, однако сроки не называют, так что предлагаю собственный патч на VM
#!/bin/bash # патчим баг битиркс вм принудительные генерации сертификатов. if cat /etc/ansible/roles/web/tasks/dehydrated.yml | grep '/home/bitrix/dehydrated/dehydrated -c --force'; then sed -i 's/dehydrated -c --force/dehydrated -c/g' /etc/ansible/roles/web/tasks/dehydrated.yml fi
Поскольку попытки действительно кончились, все что нам остается это дождаться следующего дня и убедиться что теперь сертификаты не только создаются но и нормально применяются.
Отозвать сертификат, и вернуть дефолтный Bitrix сертификат можно вот так:
sudo -u root /opt/webdir/bin/bx-sites -a reset_cert --site "site.ru" -o json
Обратите внимание
ВМ 7.3.4 — полностью изменили выдачу сертификатов на классическую certbot
|
Источник: |
С версии 7.2.2 битрикс-машины появилась возможность подключать бесплатные валидные SSl-сертификаты от Lets Encrypt прямо из меню виртуальной машины.
Let’s Encrypt — центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года, предоставляющий бесплатные криптографические сертификаты для HTTPS. Процесс выдачи сертификатов полностью автоматизирован. Сертификаты выдаются только на 3 месяца для предотвращения инцидентов безопасности.
Ограничения LetsEncrypt:
1/ https://community.letsencrypt.org/t/which-browsers-and-operating-systems-support-lets-encrypt/4394
2/ Firefox. Как мимимум с 4.0 (возможно с 1.0) работает. (StartSSL в древних лисах работать не будет). Все современные лисы работают всеми CA.
3/ Thunderbird. Точно все современные версии на всех ОС (включая wosign. StartSSL в древних версиях не поддерживается)
4/ IE и Edge. Минимум 8 версия для всех. IE6 точно не поддерживается, по IE7 в зависимости от условий.
5/ Chrome и Cromium. Поддержка ОС аналогично встроенной ОС криптоапи (древние макоси, линуксы и winXP не будут работать ни с каким CA).
6/ Safari на всех современных Apple-устройствах точно работает.
7/ Android точно работает с версии 4.2 со всеми . Версия 2.0.6 (Android browser 2.0.6 Webkit 530.17) точно НЕ работает.
8/ Java не работает с letsencrypt.
9/ wget и curl могут не работать на старых системах
Как установить бесплатный ssl сертификат от Lets Encrypt в битрикс-машине?
В меню машины пройти по пунктам 8. Manage web nodes in the pool -> 3. Certificates configuration -> 1. Configure Let’s encrypt certificate. Указать сайт (или сайты), dns имена сайта(-ов), email для нотификаций сервиса Lets Encrypt, подтвердить ввод.
Пример:
Мастер самостоятельно запросит и установит сертификат из сети.
Поддерживается ввод нескольких сайтов, через запятую (test1.bx, test2.bx).
Перевыпуск сертификатов будет автоматический. Это отлично, с учетом того что сертификат дается только на 3 месяца.
Что делать, если сертификат не устанавливается и битрикс машина выдает ошибку?
Мое знакомство с данным новшеством прошло именно так: после настройки сертификата фоновая задача в машине завершалась с ошибкой:
--------------------------------------------------------- TaskID | Status | Last Step ---------------------------------------------------------- site_certificate_1113161018 | error | play|complete
Смотрим логи и выясняем подробности. Директория /opt/webdir/temp содержит логи задач, смотрим по нашей задаче site_certificate_1113161018.
Первый лог /opt/webdir/temp/site_certificate_1113161018/status, в нем есть строчка с прерыванием, а также видим и второй лог:
TASK [web : create certificates] *********************************************** fatal: [acrit]: FAILED! => {"changed": true, "cmd": "/home/bitrix/dehydrated/dehydrated -c > /home/bitrix/dehydrated_update.log 2>&1" ...
С этого места становиться понятно, что машина установила библиотеку dehydrated в папку /home/bitrix/dehydrated, а лог ее выполнения расположен в dehydrated_update.log
Смотрим второй лог /home/bitrix/dehydrated_update.log, в нем тоже есть ошибка:
+ Responding to challenge for www.goooodsite.ru.. ERROR: Challenge is invalid! (returned: invalid) (result: { "type": "http-01", "status": "invalid", "error": { "type": "urn:acme:error:unauthorized", "detail": "Invalid response from http://www.goooodsite.ru/.well-known/acme-challenge/dummy", "status": 403 }, })
Выходит, что для проверки требуется доступность сайта по http и https с самоподписанным сертификатом, дабы проверить права владения на оба сайта.
Поэтому настроим редирект и еще раз запустим получение ключа:
1/ Отключаем редирект с http и https
2/ Создаем вручную папку на сайте /.well-known/acme-challenge/ с текстовым файлом внутри:
echo "thisisthecontentoffile" > /home/bitrix/www/site/.well-known/acme-challenge/dummychallengefile
и проверяем чтобы этот файл корректно открывался для http и https: http://www.goooodsite.ru/.well-known/acme-challenge/dummychallengefile https://www.goooodsite.ru/.well-known/acme-challenge/dummychallengefile
3/ Запускаем заново, и опять ошибка. Опять смотрим логи задачи. На этот раз сертификат получен, а ошибка в конфигурации сайта в nginx: /etc/nginx/bx/site_avaliable/bx_ext_ssl_www.goooodsite.ru.conf
4/ ошибку устраняем (лишняя директива из-за авто-вставки настроек в файл) и видим что сертификат добавился в конфиг, а сами сертификаты хранятся тут /home/bitrix/dehydrated/certs/:
# CERTIFICATE ANSIBLE MANAGED BLOCK include bx/conf/ssl_options.conf; ssl_certificate /home/bitrix/dehydrated/certs/www.goooodsite.ru/fullchain.pem; ssl_certificate_key /home/bitrix/dehydrated/certs/www.goooodsite.ru/privkey.pem; ssl_trusted_certificate /home/bitrix/dehydrated/certs/www.goooodsite.ru/chain.pem; # CERTIFICATE ANSIBLE MANAGED BLOCK
5/ nginx перезапускаем, редирект из http в https возвращаем. Сертификат добавлен.
Вот собственно путь отладки и исправления ошибки авто-установки сертификата, если сертификат был установлен на сайте, как написано в статье «Установка ssl-сертификата для битрикс окружения bitrix vm».
Использованные материалы:
- Халявные сертификаты для нищебродов без гемора. LetsEncrypt вместо Wosign и их подводные камни.
- VMBitrix 7.2.0 в релизе
- The client lacks sufficient authorization — 404
Назад в раздел
Установка сертификата Let’s encrypt
В меню Bitrix virtual appliance перейдите в пункт
8. Manage pool web servers → 3. Configure certificates
Выбрать пункт меню 1. Configure «Let’s encrypt» certificate и ввести:
- site name – имя сайта или несколько имен сайтов, для которых нужно выпустить сертификат(ы) Let’s encrypt (в данном примере: test2.b24test.site)
- dns name(s) – все домены данного сайта, для которых должен быть выпущен сертификат, включая домен с www и без, вводить несколько доменов через запятую
- email for LE notifications – почтовый адрес для уведомлений сервиса Lets Encrypt
и подтвердить ввод:
- Мастер самостоятельно запросит и установит сертификат в течение нескольких минут. Пути SSL-сертификатов будут указаны в этом же разделе:
- Проверить выпущенный сертификат можно легко – перейти на ваш сайт по протоколу https, у валидного сертификата будет замочек.
Срок действия сертификата – 90 дней. Перевыпуск сертификата происходит автоматически за 20 дней до окончания срока его действия.
Ручное обновление сертификата
С версии BitrixVM 7.4.0 проверка сертификатов автоматически производится еженедельно в субботу в 2 часа ночи по cron-у.
Если вам нужно вручную обновить сертификат, запустите получение сертификата для существующего домена. Система проверит и при необходимости обновит сертификаты.
Также вы можете вручную обновить сертификаты командой:
/home/bitrix/dehydrated/dehydrated -c
Система проверит сроки действия сертификатов и при необходимости запустит обновление.
Лог обновления сертификатов можно посмотреть по пути: /home/bitrix/dehydrated_update.log.
Внимание.
У сервиса Lets Encrypt есть свои ограничения на выпуск сертификатов. Основные из них:
- Выпуск 50 сертификатов в неделю на домены (на зарегистрированные домены у регистратора, поддомены не входят в этот счет).
- Если у вас много поддоменов, то можно все поддомены указать в одном сертификате, но здесь есть лимит в 100 поддоменов в одном сертификате.
- 5 ошибок в час выпуска сертификата на аккаунт для одного домена (не доступен хост, не прописаны записи в DNS домена и т.д).
- Проверка HTTP-01 выполняется только с использованием порта 80. Если этот порт закрыт (провайдером, например), то сертификат не перевыпустится.
После установки SSL сертификата в битриксе на виртуальной машине BitrixVM версии 7.4.1 начала появляться ошибка с сокетами, при этом если перейти на сайт по обычному http, то такой проблемы не наблюдается.
Ниже описано как решить данную проблему с сокетами при использование SSL сертификата и протокола HTTPS в Bitrix virtual appliance version 7.4.1 («1С-Битрикс: Веб-окружение»).
Открываем SSH клиет (PuTTY).
Если меню битрикса не отображается сразу, то заходим в меню следующей командой:
cd
./menu.sh
Затем выбираем поочередно пункты в меню:
8. Manage pool web servers
3. Configure certificates
2. Configure own certificate
Если данных пунктов у вас нет, то сначала нужно обязательно создать пул:
1. Create Management pool of server
После того, как зашли в пункт 2. Configure own certificate, указываем сайт или оставляем по умолчанию Enter site name (default):
Указываем:
Private Key path: /etc/nginx/ssl/cert.key
Certificate path: /etc/nginx/ssl/cert.crt
Certificate Chain path: /etc/nginx/ssl/cert_ca.crt
Пути заменяем на свои, либо предварительно запишите файлы сертификатов с такими именами по таким же путям.
После вопроса Please confirm you want to update certificate settings for the sites (N|y): вводим Y и нажимаем enter.
Готово, сайт должен открываться по HTTPS, но у меня не работало, поскольку я не указывал Certificate Chain path, у меня не было сертификатов для цепочки (промежуточных) и пока я не указал эти сертификаты в Certificate Chain path у меня SSL не работал. Точнее сам сайт по HTTPS открывался нормально в защищённом режиме, но в проверке системы битрикс показывалась ошибка с сокетами:
Ошибка! Работа с сокетами (check_socket): Fail Connection to ssl://site.com:443 Fail, Connection to ssl://site.com:443 Fail Socket error [0]:
Подробности ошибки указаны в журнале проверки системы.
Также если обратится к сайту в консоли через curl командой:
curl https:// site.com :443
выходило следующие curl: (60) Peer’s Certificate issuer is not recognized.
При нормальной работе должен показываться HTML код сайта.
Проблема еще была в том, что у меня не было никаких промежуточных сертификатов, а только публичный сертификат (CRT) и приватный ключ (Private KEY).
Центр сертификации мне больше ничего не выдавал, а точнее хостинг где я их покупал.
Техподдержка не отвечала, у них были праздничные выходные.
Как же их получить?
Нашёл решение такое, открываем сайт в браузере Firefox, нажимаем на замочек, затем на стрелку справа от зеленной надписи «Защищенное соединение», затем внизу «Подробнее».
После чего откроется окно «Информация о странице». Там нажимаем «Просмотреть сертификат».
Откроется страница с различными данными и параметрами сертификата. Находим ниже ссылки Загрузить PEM (сертификат) и PEM (цепочка сертификатов). Именно последний нам и нужен. Качаем PEM (цепочка сертификатов).
Формат PEM я переименовал в CRT. У меня сработало с ним, но возможно и с PEM сработает.
После того как я указал этот chain сертификат, как указано выше в Certificate Chain path, у меня наконец-то пропала ошибка с сокетами и все наконец стало работать как надо.
Записи о сертификатах создаются в файле:
/etc/nginx/bx/site_avaliable/ssl.s1.conf
там указано где хранятся сертификаты:
ssl_certificate /etc/nginx/certs/default/cert.crt;
ssl_certificate_key /etc/nginx/certs/default/cert.key;
ssl_trusted_certificate /etc/nginx/certs/default/cert_ca.crt;
Также данные записи были сделаны в файле /etc/nginx/bx/conf/ssl-push-custom.conf
А изначально настройки брались из /etc/nginx/bx/conf/ssl.conf
В документации вообще сказано, что для сайта по умолчанию s1 (который находится в директории /home/bitrix/www) файл будет называться /etc/nginx/bx/site_avaliable/s1.ssl.conf, а для дополнительных сайтов (которые создаются в директории /home/bitrix/ext_www/название_хоста) — /etc/nginx/bx/site_avaliable/bx_ext_ssl_название_хоста.conf.
Поэтому нужный файл конфигурации здесь еще нужно постараться определить.
Не забываем также указать в файле /etc/hosts ваш IP и домен. я указал два ip версии 4 и 6, а также 127.0.0.1 localhost
После правок нужно выполнить команду
nginx -t
И перезагрузить
service nginx restart или # /etc/init.d/nginx restart
Если нужно установить бесплатный сертификат LetsEncrypt, об это написано в этой статье Установка SSL сертификата LetsEncrypt на BitrixVM
Загрузка
Продолжаем разбираться с “Битрикс: Веб-окружение”. В прошлой статье разобрались, с установкой и настройкой. В этой расскажу, как получить и привязать бесплатный SSL-сертификат от Let’s Encrypt в “Битрикс: Веб-окружение”.
Получаем бесплатный SSL-сертификат
Для управления выдаваемыми сертификатами у Let’s Encrypt есть специальное решение под названием certbot. Подробную документацию можете найти на официальном сайте, а я просто покажу рабочую схему.
Первым делом:
# yum -y install yum-utils # yum-config-manager —enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional |
И ставим, собственно, сам
certbot
.
На этом подготовительный этап завершен.
Теперь собственно попросим выдать нам сертификат. Следующий момент, метод который я использую подразумевает, что будет использован собственный механизм от Let’s Encrypt, который работает через 443 порт, на котором у нас висит nginx. Способов обхода масса, самый простой остановить nginx, получить сертификат и запустить заново.
Запрашиваем сертификат.
yourdomain.ru
замените на ваш домен.
# certbot certonly —standalone -d yourdomain.ru -d www.yourdomain.ru |
Ответив на несколько простых вопросов вы получите сообщение об успехе.
Сертификат успешно сформирован
Вот и все, наши сертификаты готовы. Находятся они в
/etc/letsencrypt/live/yourdomain.ru/
Добавляем SSL-сертификаты к Битрикс
Дело за малым, осталось привязать сертификаты к нашему сайту. Если у вас один сайт в веб-окружении, то нам понадобится файл
/etc/nginx/bx/conf/ssl.conf
. Открываем файл, находим строки:
ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/cert.pem; |
Меняем пути на наши сертификаты.
ssl_certificate /etc/letsencrypt/live/yourdomain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.ru/privkey.pem; |
Если у вас несколько сайтов, то делаем следующие шаги.
Сначала создадим конфиг под сайт.
# cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/ssl.yourdomain.ru.conf |
Именно в нем указываем пути к нашим сертификатам, так же как описано выше.
Затем находим файл
/etc/nginx/bx/site_avaliable/bx_ext_ssl_yourdomain.ru.conf
и в нем меняем:
на
include bx/conf/sl.yourdomain.ru.conf |
Сохраняем файл и перезапускаем nginx.
# systemctl restart nginx |
Перейдите на https://yourdomain.ru и убедитесь, что все работает.
Далее в меню веб-окружения перейдите
6. Manage sites in the pool
,
5. Change https settings on site
. Выберите ваш домен и отключите доступ по http.
Отключаем доступ по http
Все, теперь ваш сайт работает по
https
и заметьте, совершенно бесплатно.
Настраиваем автоматическое продление сертификата
Естественно, что бесплатный SSL-сертификат не может быть идеальным. Срок действия сертификатов от Let’s Encrypt 90 дней, против года для платных. К счастью, это не такая уж и большая проблема. Стандартными механизмами предусмотрено автоматическое продление. Для этого надо выполнить команду:
После этого, все сертификаты которые истекают в ближайшие 30 дней будут обновлены. Есть следующая особенность, для обновления используется тот же механизм, что и для получения. В нашем случае это
--standalone
режим, который требует отключения nginx, для работы по 443 порту. Но и это предусмотрено – для
certbot
можно указать параметры
--pre-hook
и
--post-hook
, которые выполнят системные команды перед и после работы
certbot
. Таким образом наша строка обновления сертификатов приобретает следующий вид:
# certbot renew —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» |
Запустите с указанием дополнительного параметра
--dry-run
(прогонит процесс в холостую) и убедитесь, что ошибок нет.
# certbot renew —dry-run —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» |
Если все отлично, то добавим задание в cron, которое, скажем, раз в сутки в 2:16 (время сами выберите) ночи будет проверять и при необходимости обновлять наши сертификаты:
и добавляем задание
16 2 * * * /usr/bin/certbot renew —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» >> /var/log/renew.log |
В этой статье я расскажу как с помощью VM-Bitrix установить сертификат на сайт и что делать, если сертификат не хочет устанавливаться.
Let’s Encrypt – это некоммерческий проект, который позволяет выпускать бесплатные сертификаты со сроком использования – 90 дней. А в VM-Bitrix используется средство, которое по истечении этого срока в автоматическом режиме обновляет сертификат сайта.
Как создать сертификат
Сертификат с помощью VM-Bitrix создается очень просто. Приведу ниже инструкцию в виде галереи, просто листайте картинки.1 из 4
Выбираем 8. Manage pool web servers
Пройдемся по настройкам:
Enter site name – вводим название сайта, который нуждается в SSL сертификате
Enter DNS name – вводим DNS имена
Внимание! По всем введенным DNS именам должен открываться ваш сайта, иначе сертификат не будет получен.
Enter email – вводим любой, на него будут приходить уведомления о продлении сертификата
Проверка установки сертификата
Обязательно проверьте результат установки сертификата1 из 2
Выбираем 10. Background poll tasks
Если увидели finished – значит сертификат успешно установлен и внедрен в конфигурацию сервера. Открываем браузер в анонимном режиме, запускаем сайт и проверяем сертификат.1 из 3
Если видим значок замка, значит сертификат все хорошо. В подробнее можно ознакомится с сертификатом
Если по какой-то причине в браузере сайт ругается на отсутствие сертификата – попробуйте перезагрузить nginx в консоле сервера с помощью команды service nginx restart
В противном случае
Если на этапе установки увидели статус error, то идем смотреть логи по пути /home/bitrix/dehydrated_update.log и разбираться в чем проблема
Просматривать логи особенно удобно с помощью программы «mc», так что рекомендую поставить. Если у вас centos, то это делается с помощью консольной команды «yum install mc»
Ошибка в логах пишется прямым текстом, примера у меня нет, поэтому сразу перейду к рассказу о том, какие бывают ошибки.
Частые причины ошибки
- Сайт недоступен из внешней стороны
Что делать: проверить доступность сайта с анонимной вкладки или другого устройства, возможно в .htaccess задано ограничение, например http-авторизация
- Не привязано доменное имя
Что делать: проверьте A записи домена в панеле управления доменного имени
- Введен недопустимый DNS или он введет не на текущий сайт
Что делать: проверьте открытие сайта с тех DNS, которые вводили на этапе установки. Сайт должен открываться по ним. Например, www.test.ru, test.ru
- Неправильные настройки конфигурации сервера
Что делать: загляните в конфигурацию nginx на наличие установленных директив подключения сертификата
- Слишком много запросов к сервису Let’s Encrypt
Что делать: у сервиса есть ограничение на количество запросов. Если случилась эта ошибка, попробуйте на следующий день повторить процедуру
Как сгенерировать SSL на сайт другой платформы
Если у вас сайт не на Битриксе, а допустим какой-нибудь WordPress, то вы, скорее всего, не сможете создать для него сертификат через VM-Bitrix. Но можно схитрить:
- В папке /home/bitrix/dehydrated/domains/ создаем текстовый файл с названием вашего домена. Например, test.web-masterok.ga.txt
- В созданный файл добавляем название доменного имени test.web-masterok.ga
И теперь запускаем файл /home/bitrix/dehydrated/dehydrated с ключом -c.
Механизм пройдет по всем существующим сертификатам и проверит их на валидность. Для нового запросит сертификат.
Все созданные сертификаты помещаются в папку /home/bitrix/dehydrated/certs/ – там будет лежать и новый сертификат.
Остается только подключить сертификат в конфигурации nginx по пути /etc/nginx/bx/site_avaliable/bx_ext_ssl_test.web-masterok.ga в пределах директивы server:
include bx/conf/ssl_option.conf;
ssl_certificate /home/bitrix/dehydrated/certs/test.web-masterok.ga/fullchain.pem;
ssl_certificate_key /home/bitrix/dehydrated/certs/test.web-masterok.ga/privkey.pem;
ssl_trusted_certificate /home/bitrix/dehydrated/certs/test.web-masterok.ga/chain.pem;
Затем проверяем с помощью консольной команды sudo nginx -t корректность внесенных правок в конфигурацию. Если все хорошо, перезагружаем nginx. Сертификат должен подключится.
Заключение
Вот так вы можете подключить на свой сайт бесплатный SSL, который по истечению срока будет обновлен. В ближайшее время я опубликую статью, где расскажу как установить свой собственный сертификат и перевести сайт на https.