Ошибка обновления сертификата LetsEncrypt

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

Я пытался использовать letsencrypt-auto renew команда, но получил сбой:

Примечание: я изменил имена доменов / пользователей / серверов.

user@vps:~/letsencrypt# ./letsencrypt-auto renew
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: sudo /home/user/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/www.example.com.conf
2016-04-02 07:07:00,862:WARNING:letsencrypt.cli:Attempting to renew cert from /etc/letsencrypt/renewal/www.example.com.conf produced an unexpected error: You've asked to renew/replace a seemingly valid certificate with a test certificate (domains: www.example.com, example.com). We will not do that unless you use the --break-my-certs flag!. Skipping.

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

Я тупо попробовал команду с --break-my-certs флаг:

user@vps:~/letsencrypt# ./letsencrypt-auto renew --break-my-certs
Updating letsencrypt and virtual environment dependencies...You are using pip version 7.1.2, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
....
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt renew --break-my-certs
Processing /etc/letsencrypt/renewal/www.example.com.conf
new certificate deployed with reload of apache server; fullchain is /etc/letsencrypt/live/www.example.com/fullchain.pem

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/www.example.com/fullchain.pem (success)

Я думал, что это так, но когда я попытался подключиться к своему веб-сайту, я получил ошибку, сообщающую, что сертификат был выдан ненадежной стороной. (Тем не менее, сроки годности в порядке.)

Поэтому я снова попробовал первую команду:

user@vps:~/letsencrypt# ./letsencrypt-auto renew
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/www.example.com.conf

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

Но, как вы можете видеть, это не работает.

3 ответа

Имейте в виду, что процедура обновления с использованием letsencrypt-auto будет работать нормально, только если ваш предыдущий сертификат был выпущен с использованием letsencrypt-auto 0.4.0 или выше. Если ваш сертификат был выпущен с более старой версией letsencrypt-auto, вам нужно снова выдать сертификат тем же способом и с теми же параметрами и параметрами, которые вы делали в первый раз, и после этого letsencrypt-auto renew будет работать должным образом.

В любом случае, первое сообщение, которое вы получили при попытке продлить домен, было:

You've asked to renew/replace a seemingly valid certificate with a test certificate (domains: www.example.com, example.com). We will not do that unless you use the --break-my-certs flag!. Skipping.

А это значит, что у вас есть действительный сертификат для вашего домена, но команда возобновления обнаружила, что вы пытались обновить сертификат с помощью промежуточного сервера вместо рабочего сервера (примечание: промежуточный сервер является частью инфраструктуры letsencrypt и позволяет протестировать процесс, который нужно выдать сертификаты для вашего домена, но выданные поддельным центром сертификации. Если вы проверите свой сертификат, вы увидите, что эмитент Fake LE Intermediate X1).

Итак, как вы повторили процесс обновления, но с использованием флага --break-my-certs Теперь у вас есть сертификат, выданный поддельным центром сертификации, которому не будет доверять ни один из клиентов, которые подключатся к вашему сайту.

Я полагаю, вы играли с некоторой конф /etc/letsencrypt/cli.{conf,ini}, /etc/letsencrypt/renewal/yourdomain.conf или любой другой файл конфигурации, который вы использовали для выдачи первого сертификата, и в некотором конфу вы указали установку флага, поэтому letsencrypt-auto пытается обновить ваш сертификат, используя его вместо рабочего.

Выполните эту команду против вашего файла обновления conf:

grep -E 'server\ =|config_file\ =' /etc/letsencrypt/renewal/yourdomain.conf

Примечание: если вы выпустили несколько сертификатов для своего домена и добавили или удалили домены из подмножества полных доменных имен, включенных в сертификат, вместо yourdomain.conf ты мог бы иметь yourdomain-0001.conf, yourdomain-0002.conf и так далее.

Файл config_file покажет, используете ли вы файл конфигурации для своего домена, если вы не используете какой-либо файл конфигурации, вы увидите слово None.

сервер покажет, выдаете ли вы свои сертификаты на промежуточный или производственный сервер.

Если это постановка, вы увидите это:

server = https://acme-staging.api.letsencrypt.org/directory

если это производство, вы увидите:

server = https://acme-v01.api.letsencrypt.org/directory

Если вы видите, что сервер указывает на подготовку, отредактируйте файл конфигурации обновления для своего домена и измените его на рабочий. https://acme-v01.api.letsencrypt.org/directory

Кроме того, если у вас есть файл config_file, вы должны проверить этот файл конфигурации, чтобы убедиться, что параметр сервера указывает на производство, и нет такой опции, как промежуточная работа, staging = True, test-cert или test-cert = True

После того, как вы удалили параметры промежуточного хранения и изменили сервер на производственный в файле config_file и файле конфигурации обновления, вы можете попытаться обновить ваш сертификат еще раз.

./letsencrypt-auto renew --force-renewal

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/yourdomain/fullchain.pem. Your cert
   will expire on xxxx-xx-xx. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.

У меня та же проблема, что и у OP с использованием последнего certbot. Оказывается, это была не ошибка Certbot - она ​​работает отлично - вам просто нужно помнить, чтобы перезапустить / перезагрузить ваш веб-сервер, чтобы он получал обновленный сертификат! Итак, как LetsEncrypt предлагает поставить certbot renew --quiet в вашем cron, не забудьте добавить перезагрузку веб-сервера через несколько минут, в случае nginx /etc/init.d/nginx reload

У меня была такая же проблема, вы должны перезапустить ваш веб-сервер ( Apache или nginx).
я использовал certbot renew --quiet обновить.

Другие вопросы по тегам