cURL возвращает 404, пока страница найдена в браузере - PullRequest
0 голосов
/ 30 марта 2019

Некоторые домены недовольны попыткой автоматически получить ssl-сертификат с возможностью шифрования на моем сервере. Я пытаюсь запросить бесплатный сертификат, но почему-то запрос возвращает следующую ошибку:

Error: http://example.com/.well-known/acme-challenge/letsencrypt_1553892860 is not reachable. Aborting the script. dig output for domain.nl: <<EMPTY>>
Please make sure /.well-known alias is setup in WWW server.

Обычно ошибка возвращает IP-адрес или имя хоста, которые, как я знаю, домен не указывает на мой сервер. Эти ошибки мне уже удалось исправить.

Но в этом случае вывод пуст, что меня действительно смущает.

Итак, я сделал тестовый файл, который я поместил в папку de /.well-known/acme-challenge/ моего веб-сервера и попытался достучаться до него из браузера, используя http://example.com/.well-known/acme-challenge/test.txt.. браузеру удалось открыть файл, который подтвердил, что пункт назначения доступен.

В результате я попытался подтвердить получение того же файла с помощью curl (поскольку letsencrypt с Directadmin использует curl для проверки данных домена, находящихся в той же acme-вызове). К сожалению, почему-то в ответе curl говорится, что тот же файл, что и запрос, не найден.

Вот строка, которую я использовал для запроса файла с curl:

/usr/bin/curl -I -L -k -X GET http://example.com/.well-known/acme-challenge/test.txt

Теперь мой вопрос: может ли быть так, что каким-то образом сервер dns или скрипт curl запутался, так как не удалось успешно получить файл? Может быть, мне нужно сбросить curl или удалить кеш?

Я уже пытался обновить curl с помощью yum update libcurl и перезапустил apache с помощью sudo systemctl restart httpd.service.

На сервере запущены CentO с apache и Directadmin.

.

UPDATE:

Тем временем я обнаружил проблему, вызвавшую 404, почему он не может найти ссылку на моем сервере. Домен использует CNAME, который указывает на другой домен, размещенный на моем сервере, т.е. example1hostingprovider.com CNAME example2myreseller.com. CNAME example3myserver.com

Таким образом, в этом случае домен размещается хостинговой компанией, которая имеет CNAME для моего посредника, где у меня есть еще одно CNAME, указывающее на мой официальный сервер.

Когда скручивание выполняется на myserver (то есть example2.com) по ссылке, он пытается открыть ссылку на хостинге myreseller (т.е. exmaple2.com). Но этот реселлер хостинг не содержит никаких веб-файлов.

Я выяснил это, выполнив nslookup с сервера в домен (который показывает ip моего посредника (example2.com)), а при выполнении nslookup для того же домена из моего домашнего интернета показывает ip моего сервера (example3. ком).

Так что это определенно проблема DNS, почему домен не может быть доступен при запросе SSL-сертификата для него.

Самое странное, что другое доменное имя, размещенное на том же провайдере (например, example1.com), с тем же сервером имен и такими же CNAME, показывает ip моего сервера (example3.com), когда я выполняю nslookup для него с моего сервера.

Так есть ли способ принудительно изменить IP-адрес DNS моих доменов, который должен быть показан DNS-серверам? Мой сервер использует DNS-сервер 8.8.8.8

...