Баг Letsencrypt CAA
Согласно объявлению Let’s Encrypt, когда запрос сертификата содержит N доменных имен, для которых требовалась повторная проверка CAA, Boulder (программное обеспечение CA) выбирал одно доменное имя и проверял его N раз.
На практике это означает, что если подписчик проверил доменное имя во время X, а записи CAA для этого домена во время X позволили выдачу Let’s Encrypt, этот подписчик мог бы выдавать сертификат, содержащий это доменное имя, до X + 30 дней, даже если кто-то позже установил записи CAA на это доменное имя, которые запрещают выдачу Let’s Encrypt.
Эта ошибка была подтверждена командой Let Encrypt 29 февраля 2020 года.
Давайте посмотрим, как проверить, не подвержен ли домен веб-сайта уязвимости Letsencrypt CAA Rechecking.
Как проверить, не затронут ли ваш домен ошибка повторной проверки CAA LetsEncrypt
Чтобы проверить, не затронул ли ваш домен ошибку повторной проверки CAA в любых Unix-подобных системах, выполните:
$ curl -XPOST -d 'fqdn=www.example.com' https://unboundtest.com/caaproblem/checkhost
Замените www.example.com на ваше доменное имя.
Если вы видите вывод, как показано ниже, это означает, что ваш домен не затронут!
The certificate currently available on www.example.com is OK. It is not one of the certificates affected by the Let's Encrypt CAA rechecking problem. Its serial number is 0fd078dd48f1a2bd4d0f2ba96b6038fe0000
The certificate currently available on www.example.com needs renewal because it is affected by the Let's Encrypt CAA rechecking problem. Its serial number is 0fd078dd48f1a2bd4d0f2ba96b6038fe0000. See your ACME client documentation for instructions on how to renew a certificate.
$ wget https://d4twhgtvn0ff5.cloudfront.net/caa-rechecking-incident-affected-serials.txt.gz
Далее найдите серийный номер вашего сертификата:
$ openssl s_client -connect example.com:443 -showcerts -servername example.com </dev/null 2>/dev/null | openssl x509 -text -noout | grep -A 1 Serial Number | tr -d :
Замените example.com вашим доменным именем.
Пример вывода:
Serial Number 0fd078dd48f1a2bd4d0f2ba96b6038fe0000
Теперь проверьте, есть ли серийный номер в загруженном файле:
$ zgrep '0fd078dd48f1a2bd4d0f2ba96b6038fe0000' caa-rechecking-incident-affected-serials.txt.gz
Вы также можете проверить, присутствует ли запись вашего домена, как показано ниже.
$ zgrep 'www.example.com' caa-rechecking-incident-affected-serials.txt.gz
Если вы ничего не видите, вы можете быть спокойны!
Ваш домен не затронут.
Если вы видите одно или несколько доменных имен и серийных номеров сертификатов в выходных данных, вы ДОЛЖНЫ ОБНОВИТЬСЯ СРОЧНО.
Сколько сертификатов затронуто в этой проблеме?
Как указано на форуме поддержки Let Encrypt, затронуто 2,6%, то есть 3 048 289 действующих в настоящее время сертификатов, из общего числа активных сертификатов Let Encrypt в размере ~ 116 миллионов.
Let’s Encrypt планирует отозвать сертификаты, на которые повлияла эта ошибка, в 2020-03-04 20:00 UTC (15:00 по восточному времени США).
Пострадавшие подписчики уже были уведомлены по электронной почте.
Если ваш домен затронут, вы, вероятно, получили бы электронное письмо с темой – ACTION REQUIRED: Renew these Let’s Encrypt certificates by March 4.
Если вы получили это письмо, обновите сертификаты как можно скорее.
Как обновить поврежденные сертификаты
Если на ваш домен влияет ошибка повторной проверки CAA, вы должны продлить серт.
В противном случае посетители вашего сайта будут видеть предупреждения безопасности, пока вы не продлите сертификат.
Если вы используете Certbot, вот команда для обновления:
certbot renew --force-renewal