Я использую certbot для генерации SSL-сертификатов для своего сайта. У меня была проблема (из-за ошибки скрипта cron и устаревшего python2, теперь решена), когда не работало автоматическое обновление. Теперь у меня на сервере есть актуальные файлы лицензий.
Файлы лицензии находятся в архиве letsencrypt, номер, по-видимому, увеличивается с каждым обновлением (последнее обновление — fullchain3):
root@mysite /etc/letsencrypt/live/mysite.com # ls -l ../../archive/mysite.com/ total 48K -rw-r--r-- 1 root root 3.4K Sep 8 2017 fullchain1.pem -rw-r--r-- 1 root root 3.5K May 8 17:02 fullchain2.pem -rw-r--r-- 1 root root 3.5K Jul 7 21:19 fullchain3.pem
символическая ссылка указывает на последнюю версию, и lighty настроен на переход по ссылке:
root@mysite /etc/letsencrypt/live/mysite.com # ls -l ../../live/mysite.com/fullchain.pem lrwxrwxrwx 1 root root 39 Jul 7 21:19 ../../live/mysite.com/fullchain.pem -> ../../archive/mysite.com/fullchain3.pem
Однако SSLLabs сообщает мне, что мой сертификат устарел, и когда я проверяю серийные номера файлов лицензий, оказывается, что они получают fullchain2.pem.
Lighty был перезапущен. Однако mod-compress запущен. Может ли он кэшировать старый файл сертификата даже после перезапуска? И если да, то как мне сказать ему этого не делать? Если нет, то в чем причина?
ОБНОВЛЕНИЕ: Я пробовал останавливать lighty, очищать каталог кэша и перезапускать. Тот же результат, тот же файл, кажется, обслуживается ...
решение1
Хорошо, проблема решена.
Для lighty требуется дополнительный шаг после обновления сертификатов. По сути, новый файл должен быть создан вручную путем объединения двух файлов в каталоге сертификатов. см. ссылку ниже:
https://www.bytebang.at/Blog/Free+SSL+certificate+for+lighttpd+with+letsencrypt
Если этого не сделать, журнал ошибок lighty будет заполнен сообщениями «срок действия сертификата истек».
(Не буду приводить здесь полную процедуру настройки, но, по сути, после обновления сертификатов вам необходимо сделать следующее:
cat privkey.pem cert.pem > web.pem
которая должна соответствовать строке
ssl.pemfile = "/etc/letsencrypt/live/mysite.com/web.pem"
в вашей легкой конфигурации.
Как было указано ниже, на самом деле не обязательно использовать объединенный файл с последней версией Lighty, но вместо того, чтобы менять свою (в остальном стабильную) конфигурацию, я создал простой bash-скрипт для управления обновлением сертификата, а также создания файлов объединения:
#!/bin/bash
function update_web { cd $1 if [ web.pem -ot cert.pem ]; then echo updating web.pem in $1 cat privkey.pem cert.pem > web.pem fi }
/root/certbot/certbot-auto renew --no-self-upgrade update_web /etc/letsencrypt/live/mysite.com update_web /etc/letsencrypt/live/www.mysite.com