Сертификат выпущен центром, которому этот узел не доверяет
Ошибка «x509: certificate signed by unknown authority» в Kubernetes и сервисах под Directum RX: сертификат выпущен внутренним центром, корневого сертификата нет в доверенных. Где добавить корневой сертификат: ОС, containerd, контейнер.
Что это значит
Программа подключилась по TLS и не смогла проверить, кто выпустил сертификат сервера. Почти всегда это внутренний центр сертификации компании: браузеры сотрудников ему доверяют через домен, а серверы Linux и контейнеры о нём не знают.
Где встречается: containerd не скачивает образ из внутреннего реестра (ImagePullBackOff), сервис не подключается к Keycloak, хранилищу или поиску по https, curl не открывает внутренний адрес.
Как проверить
- Кто выпустил сертификат и вся ли цепочка отдаётся:
openssl s_client -connect <адрес>:443 -showcerts </dev/null | grep -E "s:|i:"
- Есть ли корневой сертификат в доверенных на узле:
/etc/ssl/certs(Debian, Astra) или/etc/pki/ca-trust(РЕД ОС). - Для контейнера: доверенные сертификаты внутри образа свои, системные с узла туда не попадают.
Что сделать
- На узлах добавить корневой сертификат:
update-ca-certificatesилиupdate-ca-trust, затем перезапустить containerd. - Для реестра образов можно указать сертификат точечно в настройках containerd для этого реестра.
- В контейнеры сервисов передавать корневой сертификат через том или секрет и подключать его к доверенным при старте.
- Если сервер отдаёт не всю цепочку, а только свой сертификат, исправлять это на сервере: см. статью про PKIX.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать