LINUX.ORG.RU
ФорумAdmin

1С-Битрикс (BitrixVM) - выпуск сертификатов Let`s Encrypt

 , , ,


0

2

Всем доброй ночи!

Столкнулся с проблемой, но обо всём по-порядку. Затеяли миграцию серверов с TimeWeb на Beget. Дешевле, поддержка работает отлично, доступность сервисов и серверов замечательная… В общем, задумали.

Для теста я сделал копию сайтов с боевого сервака (BitrixVM 7, CentOS 7) ТаймВэба на тестовый Бегет (BitrixVM 9, CentOS 9). Всё вроде работает, но разрабы слёзно просят нормальный сертификат SSL. Решение - Let`s Encrypt. Запускаю процедуру стандартными средствами Битрикса и получаю вот такую лажу:

[root@abvgdeyka ~]# /home/bitrix/dehydrated/dehydrated -c
# INFO: Using main config file /home/bitrix/dehydrated/config
Processing testsite.xxx.ru
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for testsite.xxx.ru
 + 1 pending challenge(s)
 + Deploying challenge tokens...
 + Responding to challenge for testsite.xxx.ru authorization...
 + Cleaning challenge tokens...
 + Challenge validation has failed :(
ERROR: Challenge is invalid! (returned: invalid) (result: ["type"]      "http-01"
["url"] "https://acme-v02.api.letsencrypt.org/acme/chall/2346723357/507158094397/8IxDIw"
["status"]      "invalid"
["validated"]   "2025-04-17T22:07:49Z"
["error","type"]        "urn:ietf:params:acme:error:unauthorized"
["error","detail"]      "45.xxx.xxx.157: Invalid response from https://testsite.xxx.ru:443/404.php: 404"
["error","status"]      403
["error"]       {"type":"urn:ietf:params:acme:error:unauthorized","detail":"45.xxx.xxx.157: Invalid response from https://testsite.xxx.ru:443/404.php: 404","status":403}
["token"]       "AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U"
["validationRecord",0,"url"]    "http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U"
["validationRecord",0,"hostname"]       "testsite.xxx.ru"
["validationRecord",0,"port"]   "80"
["validationRecord",0,"addressesResolved",0]    "45.xxx.xxx.157"
["validationRecord",0,"addressesResolved"]      ["45.xxx.xxx.157"]
["validationRecord",0,"addressUsed"]    "45.xxx.xxx.157"
["validationRecord",0]  {"url":"http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U","hostname":"testsite.xxx.ru","port":"80","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"}
["validationRecord",1,"url"]    "https://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U"
["validationRecord",1,"hostname"]       "testsite.xxx.ru"
["validationRecord",1,"port"]   "443"
["validationRecord",1,"addressesResolved",0]    "45.xxx.xxx.157"
["validationRecord",1,"addressesResolved"]      ["45.xxx.xxx.157"]
["validationRecord",1,"addressUsed"]    "45.xxx.xxx.157"
["validationRecord",1]  {"url":"https://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U","hostname":"testsite.xxx.ru","port":"443","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"}
["validationRecord",2,"url"]    "https://testsite.xxx.ru:443/404.php"
["validationRecord",2,"hostname"]       "testsite.xxx.ru"
["validationRecord",2,"port"]   "443"
["validationRecord",2,"addressesResolved",0]    "45.xxx.xxx.157"
["validationRecord",2,"addressesResolved"]      ["45.xxx.xxx.157"]
["validationRecord",2,"addressUsed"]    "45.xxx.xxx.157"
["validationRecord",2]  {"url":"https://testsite.xxx.ru:443/404.php","hostname":"testsite.xxx.ru","port":"443","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"}
["validationRecord"]    [{"url":"http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U","hostname":"testsite.xxx.ru","port":"80","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"},{"url":"https://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U","hostname":"testsite.xxx.ru","port":"443","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"},{"url":"https://testsite.xxx.ru:443/404.php","hostname":"testsite.xxx.ru","port":"443","addressesResolved":["45.xxx.xxx.157"],"addressUsed":"45.xxx.xxx.157"}])

В чём может быть причина?

Ры.Сы. Разумеется страница 404.php доступна и отрабатывает. Хотя я в целом не понимаю сути его претензии. Ры.Сы.2. На текущий момент DNS управляются на TimeWeb, а на Beget только сам сервер.



Последнее исправление: zerropull (всего исправлений: 1)

letsencrypt условно создаёт файлик на узле где его запускают и «снаружи» лезет за ним.

Вот по логу это видно, он идёт в
["validationRecord",0,"url"] "http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I83hDqVE7g5SLqy-7U"
И далее его сначала кидают на https, потом на https://testsite.xxx.ru:443/404.php

Как починить - почитать инструкцию по настройке letsencrypt, конкретно часть про настройку соотв вашему web серверу.
Может у битрикса для этого есть свой готовый блок инструкции и читать надо его. В любом случае искать куда-то в этом направлении

Flotsky ★★★
()
Ответ на: комментарий от Flotsky

Есть готовый блок. Вот как раз по их инструкции и делаю (([br] Ссыль: https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=11451

Там чууть-чуть отличаются номера пунктов меню, но названия пунктов теже самые. А в конце указана команда для ручного обновления сертификатов, которую я использовал в выводе.

А по 80 порту сайт работает без редиректов, я проверял

zerropull
() автор топика
Последнее исправление: zerropull (всего исправлений: 1)
Ответ на: комментарий от zerropull

Не сайт надо проверять а урл http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I8...

Только сейчас там конечно 404 потому то файла этого уже нет. Найди где он его создаёт и почему по подобному урлу его не видно.

firkax ★★★★★
()

Прикольно, ты ещё там штатный админ? Если уж совсем опыта и понимания нет, возьми certbot -w, куда уж проще. Ну или потуши на 30 сек веб сервер и пусть сертбот серт получит, если у тебя совсем все плохо с конфигами и разбираться лень.

anonymous
()
Ответ на: комментарий от firkax

У меня тут загадка была: условно 10 доменов, у каждого одинаковые днс записи, у каждого одинаковый конфиг nginx. На примерно половину доменов что dehydrated, что сертбот не могли получить серт. Магия какая-то.

Потом как-нибудь на лоре тред сделаю, смешно будет.

anonymous
()
Ответ на: комментарий от ALiEN175

Так, отвечаю всем последовательно:

  1. При чём тут 80 порт? Лог же явно говорит про 443

Вы вырвали из контекста - я отвечал другому человеку. В целом, ACME требует для своей работы именно 80й порт, поскольку он не выдаёт сертификаты по порту 443 в виду возможной компрометации нового сертификата имеющимся, в том числе через атаку, когда сервер атакующего может встроиться в обмен, «врезавшись» в канал обмена данными «между». Лезет он на 443 порт здесь для проверки и ругается на ошибку 404 при доступе к файлу 404.php (что весьма иронично). Но дело в том, что данный файл доступен через браузер.

  1. Не сайт надо проверять а урл http://testsite.xxx.ru/.well-known/acme-challenge/AWMG3fczwGXuRSq9IjaaEqbA8I8

Только сейчас там конечно 404 потому то файла этого уже нет. Найди где он его создаёт и почему по подобному урлу его не видно.

Естественно проверялось. Я создавал по данному пути файл и даже специально ему прав не назначал - он получал их иерархически. Всё отображается и отрабатывает. Также и система не ругается на 404 по этому файлу. Т.е. с ним всё ровно, он адекватно открывается и отрабатывает.

Прикольно, ты ещё там штатный админ? Если уж совсем опыта и понимания нет, возьми certbot -w, куда уж проще. Ну или потуши на 30 сек веб сервер и пусть сертбот серт получит, если у тебя совсем все плохо с конфигами и разбираться лень.

NodeJS, Assembler, PHP, GlusterFS, Ceph, IS-IS, BGP, OSPF, Cisco, Mikrotik. Я ещё умных слов нагуглить могу. Давай тебе за опыт расскажу. Если использовать certbot для BitrixVM на CentOS, то он вносит изменения в конфиг.файлы, которые не применяются, поскольку Битриск использует свои отдельные конфиги. При этом, какие записи переносить в эти отдельные конфиги, также будет не совсем понятно. И придётся методом тыка копировать строчки и прочее. Потом сломать всё к хренам и не понять, почему сломал. Если использовать команду:

certbot certonly

то, вылезает другая проблема - битрикс не подхватывает файл с ключом. Хотя вот именно здесь не совсем понятно. Сам битрикс не пишет, каким именно должен быть ключ для работы. В каком формате. Но возможно, что именно по этой причине сам битрикс использует не certbot для получения ключа с сертификатом.

У меня тут загадка была: условно 10 доменов, у каждого одинаковые днс записи, у каждого одинаковый конфиг nginx. На примерно половину доменов что dehydrated, что сертбот не могли получить серт. Магия какая-то.

Вот об этом было-бы здорово послушать.

Ты там ограничил доступ к тестовому сайту чтоль?

Как я уже писал выше, нет. Всё работает. Доступы все есть. И что конкретно не нравится certbot`у. если всё открывается нормально, не понятно максимально.

zerropull
() автор топика
Последнее исправление: zerropull (всего исправлений: 4)
Ответ на: комментарий от zerropull

и даже специально ему прав не назначал - он получал их иерархически.

Смешно.

Также и система не ругается на 404 по этому файлу.

Все что надо знать о вэберах.

битрикс не подхватывает файл с ключом.

Ах какой же гад этот битрикс, не подхватывает падла... Ну перепишите сайт на другом комбайне, делов-то :)

anc ★★★★★
()
Ответ на: комментарий от zerropull

В целом, ACME требует для своей работы именно 80й порт, поскольку он не выдаёт сертификаты по порту 443

Да ладно? А если документацию почитать? Ну дальнейший бред про атаки даже комментировать не хочу.

ругается на ошибку 404 при доступе к файлу 404.php

Прикалываетесь что-ли? Нафига LE проверять 404.php?? Это битрикс выдаёт 404 в ответ на запрос acme-challenge

ALiEN175
()
Ответ на: комментарий от zerropull

Естественно проверялось. Я создавал по данному пути файл и даже специально ему прав не назначал - он получал их иерархически. Всё отображается и отрабатывает. Также и система не ругается на 404 по этому файлу. Т.е. с ним всё ровно, он адекватно открывается и отрабатывает.

Посмотри логи nginx-а в момент когда пытался получить сертфиикат. И не надо отвечать «всем сразу» в одном сообщении, так уведомления не приходят кому надо, отвечай кнопкой «ответить» каждому отдельно.

firkax ★★★★★
()