certbot не создает хорошо известную папку (и как он вообще узнает, где это сделать?) - PullRequest
0 голосов
/ 16 января 2020

Получил сертификат на моем сервере. Это нормально для всех серверов, но для приложения Django, обслуживаемого WSGI.

Когда я обновляю сертификаты с sudo certbot renew, он говорит, что проблема не завершена. Мой веб root - /srv/site. Так или иначе, certbot знает, что ему нужно создать свои задачи в static/.well-known/acme-challenge. (Интересно, откуда он это знает, но это действительно правильно).

Если я сам создаю эту папку и помещаю туда файл "привет", я могу удалить ее, перейдя на www.site.com/static/.well-known/acme-challenge/hello. Так почему не позволяете шифровать доступ к вызовам, которые он создает?

Кажется, он не создает этот файл. Даже структуры папок, несмотря на то, что она работает как root и может создавать любые папки, какие пожелает. Я использую watch -n 0.5 ls -a /srv/site/static, чтобы проверить, создана ли хорошо известная папка, но это не так.

Почему?

Полная ошибка:

user@host:/srv/site$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/domain.tld.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for site.domain.tld
Waiting for verification...
Cleaning up challenges
Attempting to renew cert (site.tld) from /etc/letsencrypt/renewal/domain.tld.conf produced an unexpected error: Failed authorization procedure. site.domain.tld (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from https://site.domain.tld/static/.well-known/acme-challenge/yD-WpiQsGL1E_fvs2m-U6UDuHdLCh6shuJkmUdIzhXs [139.162.191.205]: "<!doctype html>\n<html lang=\"en\">\n<head>\n<link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n<". Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/domain.tld/fullchain.pem (failure)

1 Ответ

0 голосов
/ 17 января 2020

Вы упомянули, что вы установили сеть root как /srv/site. Таким образом, certbot поставит вызов на /srv/site/.well-known/acme-challenge, а не на /static/.well-known/acme-challenge/. Также certbot очищает испытания после выполнения команды certbot, поэтому вы не найдете там файлы испытаний. Я думаю, вам нужно изменить веб root на static.

Дайте мне знать, сработало ли решение. Мне очень нравится получать отзывы о моих ответах:)

...