Установка сертификатов в несколько баз через http-сервис
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Развернул тестовый фреш (https://its.1c.ru/db/freshex1 - ребятам спасибо огромное за помощь). На тестовом сервере поставило еще клиент-серверную базу. Через внешнюю обработку в этой базе будет устанавливаться сертификат в остальные базы.

Сервис рассылки сертификатов — описание
Что это такое
Сервис позволяет из одной базы разложить сертификат электронной подписи сразу в несколько других баз, не заходя в каждую руками.
Состоит из двух частей:
| Часть | Где находится | Роль |
|---|---|---|
| Внешняя обработка «СертификатыЭЦП_http.epf» | на компьютере пользователя | отправитель — находит сертификат и рассылает |
| Расширение с HTTP-сервисом cert “fresh.cfe” | в каждой целевой базе | приёмник — принимает и записывает сертификат |
Как это работает — по шагам
-
Пользователь запускает обработку на своём компьютере.
-
Обработка читает список баз из файла ibases.v8i.
-
Пользователь отмечает галочками базы, куда нужно записать сертификат, и выбирает нужный сертификат из личного хранилища.
-
Обработка достаёт сертификат из хранилища Windows и готовит из него данные: отпечаток, сам сертификат (Base64), срок действия, кому и кем выдан, должность, программу ЭП.
-
Для каждой отмеченной базы:
-
Фреш-база (ws=…) — адрес публикации берётся из строки подключения, туда уходит POST-запрос на <адрес>/hs/cert/ЗаписатьСертификат;
-
текущая база — сертификат пишется локально, без всякого HTTP;
-
-
Приёмник разбирает пришедшие данные, находит физлицо по ФИО из сертификата, определяет организацию, подбирает программу ЭП по алгоритму подписи и записывает сертификат в справочник штатным методом БСП ЭлектроннаяПодпись.ЗаписатьСертификатВСправочник.
-
Обработка собирает результат по каждой базе и показывает пользователю: куда записалось, а где ошибка.
Требования к работе
Установлена платформа 1С не ниже 8.3.27.
В каждой целевой базе (приёмнике)
-
Расширение с HTTP-сервисом cert развёрнуто и активно.
-
Сервис опубликован — в файле публикации (default.vrd) есть блок <httpServices> с сервисом cert.
-
Сервисный пользователь заведён в базе и имеет права. В моем случае тестировалось под собой с админскими правами. Для безопасности лучше создать пользователя (должен быть во всех базах) с правами для запуска обработки и чтением соответствующих справочников.
-
В базе должна быть БСП (подсистема «Электронная подпись») — используется её метод записи.
Если база в 1С:Фреш
-
В менеджере сервиса сервисному пользователю выдано право доступа к приложению.
-
Адрес публикации в списке баз (ws=…) совпадает с реальным адресом приложения.
На компьютере пользователя (отправителе)
Установлен КриптоПро CSP.
Есть доступ к файлу ibases.v8i.
Введены и сохранены логин и пароль сервисного пользователя (хранятся в безопасном хранилище, на форму пароль не выводится).
Транспорт
-
С компьютера пользователя виден адрес публикации целевой базы.
-
HTTPS — если используется защищённое соединение, сертификат сервера должен быть доверенным для клиента; иначе соединение идёт без проверки сертификата (шифрование есть, защиты от подмены сервера нет).
Что означают ответы сервиса
| Код | Что значит |
|---|---|
| 200 | Сертификат записан |
| 401 | Сервисного пользователя нет в базе или неверный пароль |
| 403 | Пользователь есть, но нет прав: право на метод сервиса либо доступ в менеджере сервиса |
| 404 | HTTP-сервис не опубликован или неверное имя базы |
| 500 | Ошибка внутри базы — текст причины в теле ответа |
Ограничения — что сервис НЕ делает
-
Не создаёт пользователей, физлиц и организации — только ищет существующие. Если физлицо по ФИО не найдено, сертификат запишется без владельца; если организация не найдена — без организации.
-
Не проверяет, что сертификат действительно принадлежит тому, от чьего имени пришёл запрос — данные передаются как есть.
-
Клиент-серверные базы без веб-публикации штатно не обслуживаются: нужен либо COM-доступ, либо публикация базы.
Что нужно настроить один раз
-
Развернуть расширение и обновить конфигурацию базы данных во всех целевых базах.
-
Добавить блок <httpServices> в публикацию каждой базы.
-
Завести сервисного пользователя с нужными правами в каждой базе.
-
В Фреш — выдать этому пользователю доступ к приложениям в менеджере сервиса.
-
Настроить HTTPS на входном веб-сервере (в Фреш — nginx).
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия государственного учреждения, редакция 2.0, релизы 2.0.110.60
- Бухгалтерия предприятия, редакция 2.0, релизы 2.0.66.61
Вступайте в нашу телеграмм-группу Инфостарт