LetsEncrypt планирует отозвать свои сертификаты из-за программной ошибки

hm3qpabqnpqsrfk9byhccvdk3nm.png
Компания 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 | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол SMTP
openssl s_client -connect example.com:25 -starttls smtp -showcerts /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 | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол IMAP
openssl s_client -connect example.com:143 -starttls imap -showcerts /dev/null | openssl x509 -text -noout | grep -A 1 Serial\ Number | tr -d :
# проверка почтового сервера, протокол IMAP
openssl s_client -connect example.com:993 -showcerts /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 года, более детальный отчет компания предоставит позднее.

© Habrahabr.ru