Прекращение действия корневого сертификата компании IdenTrust (DST Root CA X3), используемого для кросс-подписи корневого сертификата удостоверяющего центра Let’s Encrypt, привело к возникновению проблем с проверкой сертификатов Let’s Encrypt в проектах, использующих старые версии OpenSSL и GnuTLS. Проблемы также затронули библиотеку LibreSSL, разработчики которой не учли прошлый опыт, связанный со сбоями, возникшими после устаревания корневого сертификата AddTrust удостоверяющего центра Sectigo (Comodo).
Напомним, что в выпусках OpenSSL до ветки 1.0.2 включительно и в GnuTLS до выпуска 3.6.14, присутствовала ошибка, не позволявшая корректно обработать перекрёстно-подписанные сертификаты, в случае устаревания одного из Корневых сертификатов, задействованных при подписи, даже если сохранялись другие действующие цепочки доверия (в случае Let’s Encrypt устаревание корневого сертификата IdenTrust не позволяет выполнить проверку, даже если в системе имеется поддержка собственного корневого сертификата Let’s Encrypt, действующего до 2030 года). Суть ошибки в том, что старые версии OpenSSL и GnuTLS разбирали сертификат как линейную цепочку, в то время как в соответствии с RFC 4158 сертификат может представлять ориентированный распределённый циклический граф с несколькими якорями доверия, которые нужно учитывать.
В качестве обходного пути устранения сбоя предлагается удалить из системного хранилища (/etc/ca-certificates.conf и /etc/ssl/certs) сертификат «DST Root CA X3», после чего запустить команду «update-ca-certificates -f -v». В CentOS и RHEL можно добавить сертификат «DST Root CA X3» в чёрный список:
trust dump --filter "pkcs11:id=%c4%a7%b1%a4%7b%2c%71%fa%db%e1%4b%90%75%ff%c4%15%60%85%89%10" | openssl x509 | sudo tee /etc/pki/ca-trust/source/blacklist/DST-Root-CA-X3.pem
sudo update-ca-trust extract
Некоторые из попавшихся на глаза сбоев, возникших после прекращения действия корневого сертификата IdenTrust:
- В OpenBSD перестала работать утилита syspatch, применяемая для установки бинарных обновлений системы. Проект OpenBSD в экстренном порядке сегодня выпустил патчи для веток 6.8 и 6.9, устраняющие в LibreSSL проблемы с проверкой перекрёстно подписанных сертификатов, один из Корневых сертификатов в цепочке доверия у которых просрочен. В качестве обходного решения проблемы рекомендовано в /etc/installurl переключиться с HTTPS на HTTP (безопасности это не угрожает, так как обновления дополнительно верифицируются по цифровой подписи) или выбрать альтернативное зеркало (ftp.usa.openbsd.org, ftp.hostserver.de, cdn.openbsd.org). Также можно удалить просроченный корневой сертификат DST Root CA X3 из файла /etc/ssl/cert.pem.
- В DragonFly BSD аналогичные проблемы наблюдаются при работе с DPorts. При запуске пакетного менеджера pkg выдаётся ошибка проверки сертификата. Исправление сегодня добавлено в ветки master, DragonFly_RELEASE_6_0 и DragonFly_RELEASE_5_8. В качестве обходного пути можно удалить сертификат DST Root CA X3.
- Нарушен процесс проверки сертификатов Let’s Encrypt в приложениях на базе платформы Electron. Проблема устранена в обновлениях 12.2.1, 13.5.1, 14.1.0, 15.1.0.
- В некоторых дистрибутивах наблюдаются проблемы с доступом к репозиториям пакетов при использовании пакетного менеджера APT, связанного со старыми версиями библиотеки GnuTLS. Проблеме оказался подвержен Debian 9, в котором применялся неисправленный пакет GnuTLS, что привело к проблемам при обращении к deb.debian.org у пользователей вовремя не установивших обновления (исправление gnutls28-3.5.8-5+deb9u6 было предложено 17 сентября). В качестве обходного пути решения проблемы рекомендовано удалить DST_Root_CA_X3.crt из файла /etc/ca-certificates.conf.
- Нарушена работа acme-client в дистрибутиве для создания межсетевых экранов OPNsense, о проблеме было сообщено заранее, но разработчики не успели вовремя выпустить патч.
- Проблема затрагивала пакет OpenSSL 1.0.2k в RHEL/CentOS 7, но неделю назад для RHEL 7 и CentOS 7 было сформировано обновление пакета ca-certificates-2021.2.50-72.el7_9.noarch, из которого удалён сертификат IdenTrust, т.е. проявление проблемы заранее было блокировано. Аналогичное обновление неделю назад было опубликовано для Ubuntu 16.04, Ubuntu 14.04, Ubuntu 21.04, Ubuntu 20.04 и Ubuntu 18.04. Так как обновления были выпущены заранее, проблема с проверкой сертификатов Let’s Encrypt коснулась лишь пользователей старых веток RHEL/CentOS и Ubuntu, не регулярно устанавливающих обновления.
- Нарушен процесс проверки сертификатов в grpc.
- Сбой при сборке платформы Cloudflare Pages.
- Проблемы в Amazon Web Services (AWS).
- Проблемы с подсоединением к БД у пользователей DigitalOcean.
- Сбой в работе облачной платформы Netlify.
- Проблемы с доступом к сервисам Xero.
- Сбой при попытке установить TLS-соединение к Web API сервиса MailGun.
- Сбои в версиях macOS и iOS (11, 13, 14), которые теоретически проблема не должна была затронуть.
- Сбой в сервисах Catchpoint.
- Ошибка проверки сертификатов при доступе к API PostMan.
- Сбой в работе Guardian Firewall.
- Нарушение работы страницы поддержки monday.com.
- Сбой в работе платформы Cerb.
- Сбой при проверке uptime в Google Cloud Monitoring.
- Проблема с проверкой сертификатов в Cisco Umbrella Secure Web Gateway.
- Проблемы с подключением к прокси Bluecoat и Palo Alto.
- В OVHcloud возникли проблемы с подключением к OpenStack API.
- Проблемы с генерацией отчётов в Shopify.
- Наблюдаются проблемы при обращении к API Heroku.
- Сбой в работе Ledger Live Manager.
- Ошибка проверки сертификата в инструментах для разработчиков приложений для Facebook.
- Проблемы в Sophos SG UTM.
- Проблемы с проверкой сертификатов в cPanel.
P.S.: Сформированы выпуски LibreSSL 3.3.5 и 3.2.7, в которых по умолчанию включён режим X509_V_FLAG_TRUSTED_FIRST, решающий проблемы с верификацией сертификатов, связанных цепочкой доверия с прекратившим действие корневым сертификатом DST Root X3.