certbot-auto: Клиенту не хватает авторизации

Я знаю, что этот вопрос задавался несколько раз, но мне нужна конкретная помощь, так как я прислушивался к советам из нескольких других тем, и до сих пор ничего не сработало.

Я пытаюсь обновить свой SSL-сертификат в Ubuntu 14.04, используя certbot-auto renew, и я использую сервер Apache2 и nginx. Я получаю следующий вывод для certbot-auto renew:

  root@PostgreSQLServer:/# sudo certbot-auto renew
  Saving debug log to /var/log/letsencrypt/letsencrypt.log

  -------------------------------------------------------------------------------
  Processing /etc/letsencrypt/renewal/my-domain.com.conf
  -------------------------------------------------------------------------------
  Cert is due for renewal, auto-renewing...
  Renewing an existing certificate
  Performing the following challenges:
  http-01 challenge for my-domain.com
  Waiting for verification...
  Cleaning up challenges
  Attempting to renew cert from /etc/letsencrypt/renewal/my-domain.com.conf produced an unexpected error: Failed authorization procedure. my-domain.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://my-domain.com/.well-known/acme-challenge/ailNmgZADpb4QBipKM57sOi9w3PwNkwBwVFiRYs7i40: "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  <html><head>
  <title>404 Not Found</title>
  </head><body>
  <h1>Not Found</h1>
  <p". Skipping.

  All renewal attempts failed. The following certs could not be renewed:
    /etc/letsencrypt/live/my-domain.com/fullchain.pem (failure)
  1 renew failure(s), 0 parse failure(s)

  IMPORTANT NOTES:
   - The following errors were reported by the server:

     Domain: my-domain.com
     Type:   unauthorized
     Detail: Invalid response from
     http://my-domain.com/.well-known/acme-challenge/ailNmgZADpb4QBipKM57sOi9w3PwNkwBwVFiRYs7i40:
     "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
     <html><head>
     <title>404 Not Found</title>
     </head><body>
     <h1>Not Found</h1>
     <p"

     To fix these errors, please make sure that your domain name was
     entered correctly and the DNS A record(s) for that domain
     contain(s) the right IP address.

Я убедился, что папка .well-known существует в /var/www/my-domain.com/public_html, и когда я перехожу к http://my-domain.com/.well-known/ в своем браузере, я могу видеть содержимое этого каталога. Я также добавил папку acme-challenge в .well-known и включил файл test.txt для тестирования; Я смог получить доступ к каталогу и текстовому файлу в своем браузере.

Я обнаружил, что папка acme-challenge не была создана, когда я запускал команду certbot-auto, поэтому, похоже, это проблема с правами доступа. Я запускаю certbot-auto как root, но также дал права на запись пользователю www-data в папках .well-known и acme-challenge (пользователи root и www-data запускают процессы apache2 и nginx).

Даже после предоставления этого разрешения на запись я все равно получаю ошибку 404, описанную выше.

У меня также есть автоматизированный процесс обновления сертификата, работающий через crontab, и выходные данные записываются в локальный файл. В этом файле журнала я вижу, что запрос на обновление работал правильно, пока certbot-auto не был обновлен с 0.9.3 до 0.10.1. Вот пример из файла журнала, когда произошло обновление:

  -------------------------------------------------------------------------------
  Processing /etc/letsencrypt/renewal/offensively-bad.com.conf
  -------------------------------------------------------------------------------

  The following certs are not due for renewal yet:
    /etc/letsencrypt/live/offensively-bad.com/fullchain.pem (skipped)
  No renewals were attempted.

  -------------------------------------------------------------------------------
  Processing /etc/letsencrypt/renewal/offensively-bad.com.conf
  -------------------------------------------------------------------------------

  The following certs are not due for renewal yet:
    /etc/letsencrypt/live/offensively-bad.com/fullchain.pem (skipped)
  No renewals were attempted.
  Upgrading certbot-auto 0.9.3 to 0.10.1...
  Replacing certbot-auto...
  Creating virtual environment...
  Installing Python packages...
  Installation succeeded.

  -------------------------------------------------------------------------------
  Processing /etc/letsencrypt/renewal/offensively-bad.com.conf
  -------------------------------------------------------------------------------

  All renewal attempts failed. The following certs could not be renewed:
    /etc/letsencrypt/live/offensively-bad.com/fullchain.pem (failure)
  IMPORTANT NOTES:
   - The following errors were reported by the server:

     Domain: offensively-bad.com
     Type:   unauthorized
     Detail: Invalid response from
     http://offensively-bad.com/.well-known/acme-challenge/tkSc8l-r1XVPIF5TosTbEXiYMa8sQnoXEjAEgAwRoqI:
     "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
     <html><head>
     <title>404 Not Found</title>
     </head><body>
     <h1>Not Found</h1>
     <p"

     To fix these errors, please make sure that your domain name was
     entered correctly and the DNS A record(s) for that domain
     contain(s) the right IP address.

Вы можете видеть, что после обновления процесс начал давать сбой с сообщением 404.

Я испробовал все советы, которые мог найти в Интернете, и совершенно запутался, поэтому любая помощь будет очень признательна. Заранее спасибо!


person OffensivelyBad    schedule 12.02.2017    source источник


Ответы (2)


Моя проблема заключалась в слишком старой версии certbot на моем raspberry pi raspbian Stretch:

certbot --version

Дал

сертибот 0.10.2

apt-get install python-certbot-apache -t stretch-backports

Сделал трюк:

сертибот 0.21.1

А потом просто

certbot --apache -d домен.com

Надеюсь это поможет!

person Adriaan    schedule 31.03.2018

Мне пришлось отредактировать этот файл конфигурации: /etc/letsencrypt/renewal/offensively-bad.com.conf и изменить строку ниже [[webroot_map]]:

[[webroot_map]]
offensively-bad.com = /path/to/what/certbot/thinks/is/the/correct/webroot/path/initially/specified/by/the/user

В моем случае я изменил его на

    offensively-bad.com = /var/www/offensively-bad.com/public_html/

Спасибо форуму letsencrypt за помощь.

person OffensivelyBad    schedule 14.02.2017