Компания LetsEncrypt, предлагающая к использованию бесплатные сертификаты ssl для шифрования, вынуждена аннулировать некоторые сертификаты.
Проблема связана с программной ошибкой в управляющем ПО Boulder, применяемом для построения CA. Обычно проверка DNS записи CAA происходит одновременно с подтверждением владения доменом, а большинство подписчиков получают сертификат сразу же после проверки, но разработчики ПО сделали так, что результат проверки считается пройденным еще в течение следующих 30 дней. В некоторых случаях можно проверять записи второй раз, непосредственно перед выдачей сертификата, в частности нужна повторная проверка CAA в течение 8 часов до выдачи, поэтому любой домен, проверенный ранее этого срока, должен проверяться повторно.
В чем же заключается ошибка? Если запрос на сертификат содержит N доменов, требующих повторной проверки CAA — Boulder выбирал один из них и проверял его N раз. В результате существовала возможность выдачи сертификата, даже если потом (до X+30 дней) установить запись CAA, запрещающую выдачу сертификата LetsEncrypt.
Для проверки сертификатов компания подготовила онлайн-инструмент, который покажет подробный отчет.
Продвинутые пользователи могут сделать все самостоятельно, используя следующие команды:
# проверка https
openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# вариант проверки от @simpleadmin
echo | openssl s_client -connect example.com:443 |& openssl x509 -noout -serial
# проверка почтового сервера, протокол SMTP
openssl s_client -connect example.com:25 -starttls smtp -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол SMTP
openssl s_client -connect example.com:587 -starttls smtp -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол IMAP
openssl s_client -connect example.com:143 -starttls imap -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол IMAP
openssl s_client -connect example.com:993 -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# в принципе аналогично проверяются и другие сервисы
Далее надо смотреть здесь свой серийный номер, и если он в списке — рекомендуется обновить сертификат(ы).
Для обновления сертификатов можно воспользоваться certbot:
certbot renew --force-renewal
Проблема была найдена еще 29 февраля 2020 года, для разрешения проблемы был приостановлен выпуск сертификатов с 3:10 UTC до 5:22 UTC. По внутреннему расследованию ошибка была внесена 25 июля 2019 года, более детальный отчет компания предоставит позднее.
UPD: онлайн сервис проверки сертификатов может не работать с российских ip-адресов.