«Сервер: HTTPS» → «Адрес без номера порта»: bj слушает 443 (тот же HTTPS) и
80 (переход на https://имя/), переходы и адреса — без «:8443». Право на
порты <1024 — drop-in systemd AmbientCapabilities=CAP_NET_BIND_SERVICE
через root-помощника (bj-system-admin ports on|off, bj перезапускается).
Нет права/порт занят — bj работает по 8443, в настройках видна причина.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
В ГОСТ-сертификатах ключ подписи действует год–15 месяцев, а сам сертификат — до 15 лет;
bj показывал и проверял срок сертификата (например, 06.10.2036 вместо 2027). Теперь
справочник профиля ИШ и сертификаты с флешки берут срок ключа (2.5.29.16), если он раньше;
срок сертификата показывается рядом. У УЦ — по-прежнему срок сертификата.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- живые часы сервера (сверка раз в 30 с), пояс, синхронизация, источник времени
и расхождение с ним, сверка с часами компьютера администратора
- выбор часового пояса прямо на странице (раньше — только в мастере)
- «Синхронизировать сейчас»: bj-system-admin sync — разовая коррекция часов
(chrony makestep, ntpd -gq, systemd-timesyncd); серверов нет или не отвечают,
а свои не заданы — bj подбирает ВНИИФТРИ
- мастер, шаг 12: кнопка «Синхронизировать» — та же синхронизация
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- окно обновления bj после перезапуска ведёт обновление ИШ по этапам (загрузка, остановка,
резервная копия, установка, запуск, проверка) и закрывается только после проверки;
пока шлюз обновляется, то же окно на любой странице
- bj-igate-admin: этапы stop/backup/verify; после запуска сверяются версия, служба, движок,
каналы и ключ с прежними (иначе автооткат), обмен с НРД
- версия ИШ в строке НРД читается всегда заново (кэш 6 ч — только сайт НРД);
после установки версии пересобираются сразу
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- Обновление ИШ из обновления bj: страница «Шлюз НРД» (мастер и «Настройка → НРД»)
перекрывается окном с ходом установки; успех — перезагрузка страницы, ошибка —
текст и журнал. Статус ИШ отдаёт upgrade_to (получена версия, обновится сам) и
installing (идёт установка) — вместо «ИШ не работает» и кнопки переустановки.
- Сбой после полного бэкапа (dpkg, запуск, движок не в Running) — bj-igate-admin
сам откатывает ИШ к прежней версии (этап rollback); итог — ошибка «обновление до X
не прошло: …, ИШ автоматически откатан к Y и работает». Проверено на 28
искусственным сбоем после установки пакета.
- Откат не опускает счётчики id в базе ИШ: иначе новые пакеты получали бы уже
виденные bj номера и поллер их пропускал.
- Автообновление ИШ после перезапуска ядра — через 20 с (было 2 мин), с повторами
через 2 и 10 мин, если дистрибутив дописан позже. В итоге обновления bj —
пояснение, что сам шлюз обновится через несколько минут.
- Строка версий над разделом НРД обновляется сразу при смене версии ИШ.
- Сводка «НРД → Организация» и раскрытие «Перенастроить» смотрят организацию так
же, как bj (orgEff: введённое или из справочника по коду) — не «не задана», когда
ИНН взят из справочника.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- Одобрен дистрибутив ИШ 110.0.997 (deploy/release/igate-approved): клиенты
получают его компонентом igate-dist, bj-server обновляет ИШ сам (igateAutoUpgrade)
после применения обновления. Проверено на 28: установка 107.0.930 → 110.0.997
штатным bj-igate-admin, каналы сохранены, круг #M2MHR → #M2MTH с НРД TEST3 и
приём ответа поллером bj — работают.
- Бэкап перед установкой/обновлением ИШ стал полным: кроме /opt/nsd/igate и дампа
базы — данные /var/lib/igate (без флешки с ключом и кэша), юнит, обёртка запуска,
версия. Раньше откатиться было нечем: igate-dist.zip перезаписывается новой версией.
- bj-igate-admin rollback / rollback-now: возврат программы, данных и базы ИШ из
последнего бэкапа (pg_restore от postgres — с мандатными метками Astra). После
отката пришедшая версия не ставится автоматически (/var/lib/bj/igate-autoupgrade-skip),
следующая — снова да. Проверено на 28: 110.0.997 → 107.0.930 за 40 с, обмен с НРД работает.
- «Шлюз НРД»: кнопка «Откатить ИШ к <версия>», когда есть полная резервная копия.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
crestor выбирал сертификат подписанта ПСП по имени владельца. Если у владельца
в справочнике несколько сертификатов (перевыпуск ключа — у клиента так бывает),
crestor брал первый по имени и мог попасть на старый с истёкшим сроком закрытого
ключа → E070004C «Ключ ЭП/закрытый ключ шифрования уже истёк», хотя на носителе
свежий действующий ключ.
bj-validata-rebuild-gdbm: при E070004C перебирает leaf-сертификаты с НЕ истёкшим
сроком закрытого ключа (свежие первыми, до 25) и указывает подписанта явно
(-signer -dercer). Правильный (чей закрытый ключ на носителе) даёт Результат: OK,
остальные — ошибку, идём дальше. Проверено на живой флешке клиента: справочник
пересобрался (cf9a5713), signer выбран верный.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
Пересборку справочника crestor запускает igate, а /var/lib/bj был 0750 bj:bj —
igate не мог пройти в staging и выдавал ложное «нет local.pse». bj-server при
старте даёт /var/lib/bj traverse (0751) — доезжает обновлением. Воркер
bj-keymedia-install тоже даёт права и показывает реальную ошибку crestor вместо
спама «dropped older CRL» (для новых ISO). Убрана ошибочная подсказка про ГСЧ.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- Имена папок: тестовый контур — igate_exchange_test, боевой — igate_exchange (было igate_exchange и igate_exchange_prod); bj переименовывает открытые по прежней схеме сам — при сверке, в первый раз через 30 с после запуска.
- После сохранения — все открытые папки с контуром: \\IP\igate_exchange_test (тестовый TEST3), \\IP\igate_exchange (боевой).
- Закрыть папки — Samba выключается (сервер не отвечает по SMB, пока папок нет).
- Установщик (bj-installer, preseed Debian, слой пакетов образа Ubuntu): samba, winbind, libnss-winbind — заранее, чтобы в закрытом контуре папки открывались без интернета; необязательной частью (нет на диске и нет сети — установка bj продолжается); службы выключены до открытия папок.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- «Через домен»: сервер bj подключается к домену AD (winbind, один раз — учётной записью администратора домена, bj её не сохраняет); папки igate_exchange(_prod) открыты группам с ролью в bj и доменным сотрудникам bj — своим входом в Windows; краткое имя домена bj берёт из AD (crossRef nETBIOSName).
- Список доступа bj сверяет сам: после изменения групп, сотрудников и настроек входа (через несколько секунд) и раз в 15 минут.
- «Простой»: как было — один логин и пароль Samba; переход с домена выключает вход через домен (учётная запись компьютера в домене остаётся).
- bj-igate-admin share: режимы simple/domain, join (realm, workgroup, admin), проверка списка доступа на недопустимые символы, состояние — mode/joined/realm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- bj-igate-admin share: при открытии — «map to guest = never»: с «bad user» Samba пускала текущую учётную запись Windows гостем, гостю в папку нельзя, и Windows сразу писала «нет доступа» без окна логина и пароля.
- Блок «Папки шлюза по сети» — не под раскрытием, со своим заголовком; поле пароля — скрытое (было открытым текстом).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- M2M: «bj сам — автоматически» — режим по умолчанию (где ни разу не выбирали; момент включения записывается, берутся переводы не старше суток до него); «Оператор» — запасной; явный выбор не меняется.
- Контуры НРД: TEST3 и боевой — карточки с состоянием (Активный / Готов / Нужен ключ / Канала нет); «Сделать активным» видна всегда, без ключа неактивна с пояснением; «Установить ключ», «Обновить канал».
- Папки шлюза по сети: после открытия — адреса для проводника (\\IP\igate_exchange и по имени сервера, боевой — igate_exchange_prod) с кнопкой «Скопировать»; bj-igate-admin share status отдаёт ip, host, shares.
- Zabbix перенесён из «Оповещений» в «Диагностику».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- журнал ИШ: номер процесса выравнивается пробелами — опросы НРД не распознавались (серый индикатор)
- «Проверить СКЗИ и ключ»: Валидата, датчик случайных чисел, подпись профилем ИШ (а не старый bj-crypto);
индикатор «Криптографии» — по готовности ключа; карточка автозагрузки УЦ — только для разработки
- шаг «Шлюз НРД»: папки обмена по сети (Samba): логин/пароль, ручная настройка не трогается
- «Учётные записи»: необязательно — подключить домен, проверить связь, найти сотрудника и добавить с ролью;
роль из bj действует, пока группы домена с ролями не сопоставлены
- настройка QUIK МНП: «Только чтение / Чтение и запись», тонкая настройка цикла свёрнута
- индикатор «Обновления» — только когда есть что обновить; «Мастер настройки» в меню и в настройках
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- ИШ без флешки ждёт её в окне Валидаты («Вставьте ключевой носитель»): статус «ждёт флешку», без кнопки
переустановки; сторож не тратит перезапуски, а когда флешка появилась — перезапускает ИШ сам; письмо
- шаг ключа: итог — карточка «Ключ подключён», «Заменить ключ» вместо «Установить ещё один», этапы свёрнуты
- копии: «Копии на хранилище» ищет там же, куда ложится копия (подпапка по умолчанию bj-backup, не из старых
настроек); поля показываются разобранными
- [hidden] прячет всегда (пустая полоска под версией ИШ); «Шлюз НРД на другом сервере?» — что это за адрес
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- шаг «База bj»: перенос на сервер PostgreSQL организации (проверка подключения, версии, прав, пустой базы;
pg_dump → psql; сверка числа строк по таблицам; переключение и перезапуск); прежняя база — запасная копия;
резервные копии: дамп внешней базы по её подключению, восстановление её не трогает
- все формы: пустые видимые обязательные поля называются по имени и подсвечиваются; DEPO — и на сервере
- «Обновить/Создать канал»: в фоне bj, ход по этапам с таймером (и после перезагрузки страницы), переходы
заблокированы до конца, в конце проверка, что шлюз загрузил канал; состояние ИШ во время записи — без
очереди к root-обработчику (страница больше не висит на «Проверяю…»)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- bj-igate-admin: пустые строки в числовых/интервальных параметрах канала ИШ разбирал с ошибкой и не
загружал канал («There are no active channels», API 500 «more than one Channel…»); теперь NULL, как пишет
интерфейс ИШ; старые каналы чинятся при «Создать канал»; папка архивов 1042S — по имени
- проверка «Шлюз НРД»: канал контура действительно загружен и включён (api/admin/channels/wsl)
- «Учёт DEPO»: нет процедур bj2depo — жёлтое «не забудьте доустановить», не блокирует
- HTTPS: перенаправление с http:// включено по умолчанию, только когда HTTPS реально слушает порт
- мастер: шаг «Учётные записи» (роли, создание, «Придумать пароль») перед проверкой; письма с проверки убраны;
форма «создать» не меняет существующую запись с тем же логином
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Администратору (адрес из «Почты») — сбои (ИШ, связь с НРД, службы bj, DEPO) и обновления (новый выпуск bj,
ИШ, лицензия, сертификаты); отделам — переводы и поручения. Существующие установки: администратор получает
всё, что получал. Новые оповещения: «Доступно обновление bj» (раз на выпуск), «Служба … не работает /
снова работает» (модули и служба ключей Валидаты). Резервные копии: \\сервер\папка или сервер + общая
папка по полям → //сервер/папка; понятная причина отказа доступа.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На сервере без экрана окно Валидаты «Пожалуйста, двигайте мышью» никто не видел, ключ в тихом режиме
падал с 0x80090022 (ИШ: «Не найден ключ ЭП (E0700009)»), пересборка справочника — тоже.
bj-validata-rng: тихая проверка датчика (testcsp -silent -random), сеанс на виртуальном экране,
движения из поля мастера повторяются в окне Валидаты (XTEST), прогресс — по полосе её окна.
Установщик ключа проверяет датчик до записи на флешку. zpki.ini: Count = числу профилей, блоки подряд.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На .29 ключ с флешки не загружался ни у root (пересборка справочника: «Ошибка
загрузки ключа ЭП»), ни у igate (подпись: «Не найден ключ ЭП»), хотя флешка
смонтирована и ключ виден; на рабочем сервере та же проверка подписи — OK.
Перезапуск службы ключей (vdcrysvc, init-скрипт vdmkdev) мог молча не сработать на
свежем сервере: юнит появляется только после daemon-reload, а init-скрипт не
понимает restart. Теперь: daemon-reload, enable, restart (или stop/start), проверка,
что vdcrysvc работает; после неудачной подписи — перезапуск службы и повтор. В
диагностике — состояние службы ключей.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На .29 ключ с флешки не подписывал (E0700009 «Не найден ключ ЭП»): ИШ не видел
флешку. Если автомонтирование ключевой флешки не сработало, установщик монтирует
её напрямую (только чтение, под igate) и проверяет подпись ещё раз. Не помогло —
в ошибке: смонтирована ли флешка в /var/lib/igate/keymedia и какие ключи (*.vdk)
видит ИШ.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Мастер смотрел не на итог установщика, а ставил галочки подряд: при «ошибке
пересборки» и несформированном профиле ИШ показывал «Готово». Теперь этап с
ошибкой — красный, причина — в сообщении, «Готово» — только когда справочник
собран, профиль ИШ создан и ключ подписывает (оба пути — флешка и архив).
- Подготовленная флешка: справочник на ней уже совместимый (пересобран при первой
установке) — если пересборка не удалась, берётся как есть (gdbm cf9a5713;
архивный НРД ce9a5713 — только с пересборкой).
- В конце установки — проверка под igate: ключ подписывает проверочный документ
профилем ИШ; не подписывает — понятная ошибка («вставлена ли флешка?»).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Флешка с готовым ключом (например, с другого сервера bj) используется как есть:
bj-keymedia-install use-media ничего на неё не пишет — справочник для ИШ
пересобирается в копии на диске, из неё — профиль ИШ; этапы и кнопки — «использовать
ключ с флешки», «на неё ничего не записывается».
- Ключевая флешка подключается к ИШ постоянно и только на чтение, как на рабочем
сервере: строка fstab по UUID на /var/lib/igate/keymedia с автомонтированием
(прежний fstab — копией), ссылка реестра ключей igate на флешку. И при обычной
установке (запись архива) — тоже: на свежем сервере Валидата иначе не находила ключ.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На шаге 1 мастера ключа — второй путь «Ключ уже на флешке»: выбор флешки и
«Взять ключ с флешки». Флешка только читается (bj-keymedia-install stage-media):
ключ (*.vdk) и справочник (local.pse + local.gdbm; раскладка bj — профиль с
key.reg) копируются во временный каталог в раскладке архива, дальше — обычная
установка на ту же флешку под тем же именем профиля (резервная копия флешки,
пересборка справочника, профиль ИШ, перезапуск). Ключ без справочника — понятный
отказ: справочник есть только в архиве НРД. Устройство — только из обнаруженных
съёмных.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Дистрибутив ИШ — компонент выпуска igate-dist (версия = версия ИШ). В выпуск
попадает только одобренный архив: deploy/release/igate-approved (версия и
sha256), сборка сверяет контрольную сумму. Клиент получает его обновлением;
bj-server после обновления (и при запуске) сам обновляет ИШ, если на сервере
он старее; итог — событие в «Новостях». Настройки, каналы и база ИШ
сохраняются, прежняя версия — в /var/backups.
- Установка «с сервера» берёт самый новый проверенный дистрибутив: с образа или из
обновления. С сайта НРД — только в режиме разработки.
- Большие файлы: одна прежняя копия вместо пяти; предел скачивания — по размеру.
- Ход установки ИШ — этапами: пройденные, текущий («идёт 0:41 · обычно до 1:30»,
дольше обычного — предупреждение), журнал под раскрытием; кнопка на время
установки выключена.
- Установщик: уникальные этапы; igate-cli и сессия ключницы с принудительным
завершением (timeout -k); зависшая установка (ход не менялся 15 минут)
снимается повторным запуском; служба установки — не дольше 40 минут.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Также: версия файла, совпадающего с выпуском, записывается (нет ложного «новее»); признак неудачной проверки отдельно от результатов установки; окно обновления само перезагружает страницу.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Модули работают отдельными службами (bj-npr, bj-quikexport, bj-lk), и когда
служба лежит, раздел модуля отвечает ошибкой связи, а администратору
предлагалось идти в консоль за systemctl status. Теперь в разделе «Обновления»
карточка «Службы»: состояние каждой службы, с какого времени, причина отказа
и кнопка «Перезапустить».
Состояние читаем обычным systemctl show — прав не требует. Перезапуск делает
root-демон bj-keymedia (тот же канал, что у установки обновлений) по закрытому
списку служб: чужую службу и сам демон отсюда не тронуть.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
- internal/release/components.go: список компонентов (ядро bj-server, криптосервис, bj-lk,
bj-npr, bj-quikexport) с путём и службой, установленные версии в components.json,
расчёт обновлений по версии каждого файла и sha256 (без отката, модули — только если
уже установлены на сервере)
- cmd/bj-component-install: root-установщик — сам перепроверяет подпись манифеста ключом
/etc/bj/update.pub и sha256, копия прежнего файла, перезапуск только затронутых служб
- updater: bj-server (без прав root) скачивает в update-staging и передаёт установку
root-воркеру (действие component-install); установка в фоне
- настройки: таблица компонентов с версиями, «Обновить» и «Обновить всё»
- bj-release: версия файла из <файл>.version; bj-keymedia-worker: component-install
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>