fix(sf): ekb_geoportal_client verify=False — росс-гос-CA не в trust-store контейнера (#1067) #1103
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1103
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/1067-ekb-geoportal-tls-verify"
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?
Latent bug — геопортал-клиент падал TLS из контейнера
Поймано при подготовке #1085 (probe реального клиента с прода):
Геопортал ЕКБ отдаёт TLS-цепочку с корневым российским гос-УЦ, которого нет в trust-store наших контейнеров (та же история, что у НСПД).
ekb_geoportal_client.py(#1083) использовал httpx сverify=Trueпо умолчанию → весь geoportal-интеграционный слой не работал бы с прода:get_or_fetch_zone_regulation(#1099)functional_zone/krt/zone_regulationв analyze (#1101)Всё gated default-off, поэтому прод сейчас не сломан — но при включении флага вернулись бы пустые блоки (graceful-swallow прятал бы TLS-ошибку в warning).
Фикс
_http_get_json/_http_post_json→verify=False(module-const_VERIFY_TLS).nspd_lite._SSL_CTX = ssl._create_unverified_context()для тех же росс-гос-эндпоинтов.Валидация
gendesign-backend-1, httpx 0.28.1):verify=False→ WFS вернулurban_index="Ц-1"✅ (сverify=True—CERTIFICATE_VERIFY_FAILED).verifykwarg принят httpx 0.28.1 без TypeError/DeprecationWarning (-W error::DeprecationWarning).test_http_helpers_disable_tls_verify— ловит молчаливый ре-брейк (assert verify=False в обоих хелперах).pytest tests/test_ekb_geoportal_client.py→ 12 passed;ruffclean.✅ APPROVE — latent TLS-fix, security-обоснован.
Security-review (verify=False — НЕ новая дыра, установленный паттерн):
_VERIFY_TLS=Falseодин const → 2 module-level хелпера; не глобальный httpx-патч, другие клиенты (НСПД/Avito/Cian/dadata) не затронуты (другие файлы).nspd_lite._SSL_CTX=ssl._create_unverified_context(),nspd_client,ekburg_permits.py(httpx.Client verify=False, екатеринбург.рф Минцифры-CA),pzz_loader(Росреестр PKK6). Консистентный проектный паттерн для росс-гос-CA.verify=валиден (не deprecated; прод-probe подтвердил WFSurban_index="Ц-1"). Регрессия-тест non-vacuous (assert verify=False прокинут).Минор (cosmetic): docstring
_http_get_json«нормальный TLS, без спец-обвязки» теперь противоречит verify=False — обновить при следующем касании (не блок).Advisory (для будущего): если к клиенту добавятся auth-заголовки → перейти на pinned ssl_context с нац-CA (вариант 1). Сейчас open-data + no-secrets → verify=False обоснован.
Merge → deploy-verify (geoportal за флагом OFF → /health-green достаточно).