fix(hermes): доверять внутреннему CA — иначе OIDC-discovery падает на CERTIFICATE_VERIFY_FAILED #76
Loading…
Reference in a new issue
No description provided.
Delete branch "refs/pull/76/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Симптом
Попытка входа в дашборд:
Причина
Провайдер
self-hostedв дашборде делает discovery кhttps://sso.${SECRET_DOMAIN}/.well-known/openid-configuration(httpx), а этот хост отдаётenvoy-internalс сертификатом от нашегоinternal-ca. В образе системного стора такого CA нет,verify=Trueне проходит.Проверено:
/opt/data/ca-internal-bundle.pem(151 сертификат из тома) проверяет цепочкуsso.grachevko.ru(issuer листа =internal-ca), и discovery через него отдаётissuer: https://sso.grachevko.ru,authorization_endpoint: .../oauth/v2/authorize.Почему не «ходить на внутрикластерный http-адрес» (приём из
references/oidc-internal-provider.mdдля Envoy-провайдера): плагин дашборда запрещает такое явно —plugins/dashboard_auth/self_hosted/__init__.py:62-64,_require_https_or_loopbackтребуетhttps://(или http только на localhost), иissпинится к discovery-issuer'у. Вариант с внутренним http-адресом здесь недостижим.Правка
Три переменные среды в контейнер (и те же три — в
.envтома, чтобы совпадало независимо от того, кто из них выигрывает):SSL_CERT_FILE— точнo тот рычаг, который читает httpx приverify=True(httpx/_config.py:33-37), то есть именно клиент, которым ходит плагин. Побочно закрывает остальные https-пути агента (requests/curl) к внутренним адресам.Ограничение, которое надо знать
Бандл — копия в томе, а
internal-caротируется (~90 дней поreferences/oidc-internal-provider.md). После ротации файл устареет и вход снова упадёт с той же ошибкой. Правильное решение — trust-manager:Bundleс внутренним CA → ConfigMap в nsgrachevko, монтировать в под read-only и указыватьSSL_CERT_FILEна егоca.crt. В скилле рецепт есть, но trust-manager в кластере ещё не стоит — предлагаю отдельной задачей, а сейчас закрыть вход копией из тома.Проверка после мёржа: под пересоздаётся (переменные среды меняют подшаблон), в логе
dashboard-auth-self-hosted: registered provider (issuer=https://sso.grachevko.ru, client_id=391638025492299835, scopes='openid profile email', confidential=False), попытка входа больше не отдаётCERTIFICATE_VERIFY_FAILED.