Я пытался обновить сертификат моего сервера. Текущий истек 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.
Но, как видите, не работает.
Имейте в виду, что процедура обновления с использованием letsencrypt-auto будет работать нормально, только если ваш предыдущий сертификат был выпущен с использованием letsencrypt-auto 0.4.0 или выше. Если ваш сертификат был выпущен в более старой версии letsencrypt-auto, вам необходимо снова выпустить сертификат таким же образом и с теми же параметрами и параметрами, что и в первый раз, и после этого letsencrypt-auto возобновление будет работать должным образом.
В любом случае, первое сообщение, которое вы получили при попытке продлить домен, было:
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 пытается обновить ваш сертификат, используя его вместо производства.
Выполните эту команду для своего файла конфигурации обновления:
grep -E 'server\ =|config_file\ =' /etc/letsencrypt/renewal/yourdomain.conf
Примечание: если вы выпустили несколько сертификатов для своего домена и добавили или удалили домены из подмножества полных доменных имен, включенных в сертификат, вместо yourdomain.conf
ты мог бы иметь yourdomain-0001.conf
, yourdomain-0002.conf
и так далее.
config_file покажет, используете ли вы файл конфигурации для своего домена, если вы не используете какой-либо файл конфигурации, вы увидите слово «Нет».
server покажет, выпускаете ли вы сертификаты для промежуточного или производственного сервера.
Если это постановка, вы увидите это:
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, 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
обновить.