При запросе обновления сертификата возникает ошибка:
# INFO: Using main config file /home/bitrix/dehydrated/config
Processing
my.domen
+ Checking expire date of existing cert…
+ Valid till Dec 1 22:00:27 2022 GMT (Less than 20 days). Renewing!
+ Signing domains…
+ Generating private key…
+ Generating signing request…
+ Requesting new certificate order from CA…
+ Received 1 authorizations URLs from the CA
+ Handling authorization for
my.domen
+ 1 pending challenge(s)
+ Deploying challenge tokens…
+ Responding to challenge for
my.domen
authorization…
+ Cleaning challenge tokens…
+ Challenge validation has failed
ERROR: Challenge is invalid! (returned: invalid) (result: [«type»] «http-01»
[«status»] «invalid»
[«error»,»type»] «urn:ietf:params:acme:error:unauthorized»
[«error»,»detail»] «275:6578:1::5c445:4569» Invalid response from
https://my.domen/.well-known/acme-challenge/dUzivMQcUJ15ZYDobejVQcFroztd_YYh9Z2wd77p..
.: 404″
[«error»,»status»] 403
[«error»] {«type»:»urn:ietf:params:acme:error:unauthorized»,»detail»:»275:6578:1::5c445:4569: Invalid response from
https://my.domen
/.well-known/acme-challenge/dUziv$
[«url»] «
https://acme-v02.api.letsencrypt.org/acme/chall-v3/184523880117/oY249A»
;
[«token»] «dassdhgfhDobsdfoztd_YYh9Z2wfghmo»
[«validationRecord»,0,»url»] «
http://my.domen
/.well-known/acme-challenge/dUzivMQcUJgfhobejVQcFroztd_YYh9Z2wd77pP…;
[«validationRecord»,0,»hostname»]
my.domen
[«validationRecord»,0,»port»] «80»
[«validationRecord»,0,»addressesResolved»,0] «*.*.*.*»
[«validationRecord»,0,»addressesResolved»,1] «275:6578:1::5c445:4569»
[«validationRecord»,0,»addressesResolved»] [ «*.*.*.*»,»275:6578:1::5c445:4569″]
[«validationRecord»,0,»addressUsed»] «275:6578:1::5c445:4569»
[«validationRecord»,0] {«url»:»
http://my.domen
/.well-known/acme-challenge/dUzivMQcUJfhodfhVQcFroztd_YYh9Z2wd77pP…$
[«validationRecord»,1,»url»] «
https://my.domen
.well-known/acme-challenge/dUzivMQcUJ1hfghfejVQcFroztd_YYh9Z2wd77p…;
[«validationRecord»,1,»hostname»]
my.domen
[«validationRecord»,1,»port»] «443»
[«validationRecord»,1,»addressesResolved»,0] «*.*.*.*»
[«validationRecord»,1,»addressesResolved»,1] «275:6578:1::5c445:4569»
[«validationRecord»,1,»addressesResolved»] [» «*.*.*.*»,»275:6578:1::5c445:4569″]
[«validationRecord»,1,»addressUsed»] «275:6578:1::5c445:4569»
[«validationRecord»,1] {«url»:»
https://my.domen
/.well-known/acme-challenge/dUzivMQcUJ15ZYDobejfhztd_YYh9Z2wd77p…$
https://my.domen
/.well-known/acme-challenge/dUzivMQcUJ15gfhhfghfhvnroztd_YYh9Z2wd77p… [{«url»:»
http://my.domen
/.well-known/acme-c$
[«validated»] «2022-12-06T07:03:22Z»)
Порт 80 открыт.
Выполняю через Manage pool web servers
Так и командой /home/bitrix/dehydrated/dehydrated -c . Причем ранее сертификаты обновлялись нормально. Помогите пожалуйста разобраться.
Не перевыпускаются сертификаты 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
Версии виртуальной машины bitrixEnv увеличиваются, а установка ssl сертификата все еще является проблемой. В этой статье я расскажу как установить LetsEncrypt SSL-сертификат на виртуальной машине bitrix VM без головной боли.
Не все знают, что установить SSL сертификат от LetsEncrypt можно непосредственно из меню Bitrix vm, но не смотря на то, что такой пункт появился начиная с версии 7.2 виртуальной машины, он естественно не работает корректно, т.е. вы не сможете установить сертификат просто проследовав за указаниями виртуальной машины битрикс. Те же, кто хочет попытать счастье, может просто пройти в меню виртуальной машины битрикс, выбрать пункт меню «Manage pool web servers», далее «Configure certificates» и «Configure «Let’s encrypt» certificate». Далее все очень просто, нужно просто следовать указаниям bitrix vm.
На момент написания статьи получение сертификата заканчивалось ошибкой.
В интернете есть статьи о том, как обойти эту и другие ошибки, но мы пойдем дальше. Я не люблю то, что не работает из коробки, поэтому в этой статье будет рассмотрено получение SSL сертификата LetsEncrypt для vm bitrix через certbot автоматически, с авто обновлением т.к. этот способ я считаю оптимальным.
Что делать, если SSL сертификата LetsEncrypt не устанавливается на vm bitrix?
Шаг 1. Установка certbot на cento7 (если у вас дпугая система, то подробную инструкцию можно получить по
ссылке
)
Подготовка к установке certbot.
yum -y install yum-utils
sudo yum install certbot python2-certbot-nginx
И собственно сама установка certbot
yum install certbot
Далее получаем сертификат
sudo certbot certonly --nginx
нам предложат выбрать сайт для которого мы хотим получить сертификат.
Нужно указать цифру соответствующую нужному сайту или несколько цифр через запятую, если получаем сертификат для домена и его поддоменов.
Если все прошло успешно, то вы увидите примерно следующее:
Обратите внимание на выделенные строки — это и есть ваши SSL сертификаты от LetsEncrypt, точнее пути их сохранения. Скопируйте эти пути, они нам еще понадобятся для подключения к bitrix env.
Уточнение: если не удалось получить сертификаты командой (sudo certbot certonly --nginx
) или такой способ вам по каким-то причинам не подходит, то можно заменить эту команду на (certbot certonly --webroot -w /var/www/example -d www.example.com -d example.com
)
где — —w /var/www/example/
— — путь к корневой папке вашего домена
-d www.example.com
— доменное имя для которого получаете сертификат, обратите внимание, что можно указать несколько доменных имен.
Дальше действия аналогичные приведенной статье
Добавляем SSL сертификаты LetsEncrypt в BitrixEnv
Скопируем конфигурацию (Вместо .yourdomain.ru можно написать что угодно, но я советую указать домен того сайта для которого вы получили сертификаты)
cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/ssl.yourdomain.ru.conf
Затем редактируем файл /etc/nginx/bx/conf/ssl.yourdomain.ru.conf
и указываем расположение privkey.pem
(приватный ключ домена) и fullchain.pem
(публичный сертификат домена) в директивах nginx ssl_certificate_key
и ssl_certificate
соответственно.
Далее открываем файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_yourdomain.ru.bx.conf
Находим в нем строку include bx/conf/ssl.conf;
и заменяем на include bx/conf/ssl.yourdomain.ru.conf;
На этом все. Осталось проверить все ли верно мы написали (верна ли конфигурация nginx)
nginx -t
И если все ок и нет никаких предупреждений, то перезагружаем nginx
service nginx restart
с этого момента у вас уже будет установленный сертификат SSL от LetsEncrypt, но согласитесь не хочется раз в 3 месяца (именно столько живет ssl сертификат от LetsEncrypt) обновлять сертификат в ручном режиме.
Как настроить автоматическое обновление SSL сертификата LetsEncrypt для bitrixEnv?
Автоматическое обновление сертификата настраивается очень просто нкжно в консоли вставить команду
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
Это добавление крон задачи на автоматическое обновление сертификатов.
Или если вы не вставили эту команду, а сертификаты истекли, то можно обновить все сертификаты, которые в этом нуждаются командой
certbot renew
Все ранее установленные сертификаты обновятся автоматически.
Надеюсь, что статья помогла вам.
С версии 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
Назад в раздел
После переустановки сервера (CentOs 7.8 с виртуальным окружением bitrix на борту.), при попытке получить сертификат, средствами bitrix env, получаю ошибку:
# INFO: Using main config file /home/bitrix/dehydrated/config
+ Fetching account URL...
+ ERROR: An error occurred while sending post-request to https://acme-v02.api.letsencrypt.org/acme/new-acct (Status 400)
Details:
HTTP/1.1 100 Continue
HTTP/1.1 400 Bad Request
Server: nginx
Date: Mon, 10 Oct 2022 12:00:10 GMT
Content-Type: application/problem+json
Content-Length: 134
Connection: keep-alive
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Replay-Nonce: F977MCD-9BRjEkRdNoYs-W7jrC92t0B4nSovlgZJnVMH29U
{
"type": "urn:ietf:params:acme:error:accountDoesNotExist",
"detail": "No account exists with the provided key",
"status": 400
}
Если попробовать зарегистрировать dehydrated:
/home/bitrix/dehydrated/dehydrated --register
# INFO: Using main config file /home/bitrix/dehydrated/config
+ Account already registered!
Хочу получить сертификат, на тоже доменное имя, что было до переустановки.