WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-090 · Дефект · Инфраструктура · web

Verifier ролей падает с непонятной ошибкой на LibreSSL: системный openssl macOS не умеет Ed25519 — требовать OpenSSL 3+ явно и fail-closed с внятной причиной

Закрыт P2 ведёт: backup-opus
Суть
## Найдено 21.08 ~07:30 при регистрации owner-ключа (WEB-088 / роли V10)
tools/rolesv10_common.py:public_key_spki_sha256 зовёт голый openssl из PATH. На M4 системный openssl = LibreSSL 3.3.6, он НЕ поддерживает Ed25519 → GateError INVALID_OWNER_PUBLIC_KEY «unable to load Public Key». Выглядит как «ключ плохой», хотя ключ валидный: /opt/homebrew/bin/openssl (OpenSSL 3.6.3) читает его и даёт spki cf86d782… (совпало с независимым расчётом на ноутбуке).
РИСК: на чужой машине (или у ревизора) verifier так же обвинит валидный ключ — класс «ошибка врёт о причине».
ФИКС: (а) проверять версию/вендора openssl на старте (openssl version), требовать OpenSSL 3+; (б) при LibreSSL — падать с явным «этот verifier требует OpenSSL 3+, найден LibreSSL X»; (в) разрешить переопределение путём env OPENSSL_BIN; (г) негативный тест: подсунуть LibreSSL-подобный стаб → внятная причина, не «bad key».
СДЕЛАНО ПОПУТНО: owner-exclusive ключ зарегистрирован — evidence/rolesv10/live/OWNER-TRUST.json (ACTIVE, ownerExclusive=true, spki cf86d782…), публичная половина в live/owner-public.pem. Приватная половина у owner и никогда не была у координатора (это и есть смысл V9-AUD-006).
Доказательства

[24.08 13:20] ИСПРАВЛЕНО (волна w090 на M4, ветка agent/w090-libressl, коммит 0f7e0d93 от agent/roles-r9-r11): rolesv10_common.py — детект вендора/версии openssl (нужен OpenSSL 3+), кандидаты PATH + Homebrew openssl@3 + override OPENSSL_BIN, честные ошибки OPENSSL_UNSUPPORTED/OPENSSL_NOT_FOUND с читаемым «requires OpenSSL 3+» (не стектрейс INVALID_OWNER_PUBLIC_KEY). Преflight обоих verifier'ов проверяет openssl на старте. НЕГАТИВНЫЙ тест: LibreSSL-стаб → exit 1 с читаемой ошибкой (пруф на живом LibreSSL 3.3.6 M4). Сюиты: 2+6+30 тестов зелёные, полный прогон verifier'а RC=0 (transcript в artifacts/). В следующий пакет ролей аудитору включить эту ветку. Кандидат на closed после включения в пакет.

[25.08 ~12:55] ЗАКРЫТО. Фикс: commit 822e948 (ветка web090, дерево r9r5-court, merge в court-main 0895412): require_openssl3() — vendor/версия на старте, OPENSSL_BIN override (абсолютный путь), стабильный код REQUIRES_OPENSSL3 с инструкцией, все crypto-вызовы через выбранный бинарь; негатив-стаб в test_rolesv10_preflight.py. НЕЗАВИСИМАЯ приёмка (не автор) на РЕАЛЬНОЙ среде M4/LibreSSL 3.3.6: (1) системный PATH → GateError code=REQUIRES_OPENSSL3, msg «requires OpenSSL 3+, found LibreSSL 3.3.6» (не «bad key»); (2) OPENSSL_BIN=/opt/homebrew/bin/openssl → gate rc=0, spki release-ключа = cf86d782… (совпал с независимым расчётом). Отчёт: A1 /home/ubuntu/waves/WEB090-REPORT.md.

📎 Трейл: отчёт /home/ubuntu/waves/WEB090-REPORT.md; ветка web090@822e948, merge court-main 0895412; вошёл в аудиторский пакет rolespack13.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-090","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-25T14:15:54.718Z