Служебные http-сервисы, которые работают даже в заблокированной базе

Публикация № 1399635 16.03.21

Системное администрирование - Администрирование веб-серверов

docker apache http vrd oscript

В этой публикации описывается опыт доступа к служебным http-сервисам в обход установленной блокировки информационной базы.

Я привык автоматизировать свою работу, поэтому в моих рабочих базах живет http-сервис для централизованного управления расширениями, внешними обработками, получения всякой нужной и ненужной информации, вроде настройки платформенной истории данных или записей журнала регистрации. В рамках этой статьи не важно, что именно. Важно, что этот сервис выполняет какое-то полезное дело, но нужен только для администрирования.

 

 

На скрине ниже показан одна из команд этого сервиса, Help, выводящая список доступных команд (попытка самодокументирования).

 

 

Уточню, на скрине выше и далее, если скрин касается выполнения запроса к http-сервису, изображена программа Insomnia (insomnia.rest).

Если в данный момент база заблокирована (установлена блокировка сеансов с кодом разрешения), http-сервис ожидаемо не работает:

 

 

Как быть в такой ситуации? Я - администратор системы и я точно знаю, что мне можно в данный момент пользоваться http-сервисом. Я сам включил блокировку сеансов, собираюсь устанавливать релиз или осуществлять прочие административные действия, но неплохо было бы, если бы мой служебный сервис не прекращал в это время работу.

Обычно это решается тонкой настройкой публикации на веб-сервере, где в vrd файле описывается авторизация и/или код разрешения для входа в обход установленной блокировки. Однако рабочие базы уже опубликованы, причем все сервисы в одной публикации. Администрированием веб-сервера я не занимаюсь, а объяснить, что нужно сделать админам, чтобы опубликовать нужный сервис отдельно - целый квест.

Но ведь публикация базы на веб-сервере - это по сути создание промежуточной точки доступа для клиента. Клиент обращается к веб-серверу, веб-сервер поднимает исполняемый файл, который общается уже с сервером 1С. Раз клиент-серверная архитектура подразумевает множество клиентов, почему бы не организовать отдельное подключение для нашего случая?

Для организации своей отдельной публикации воспользуемся докером и замечательной статьей Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Далее я тезисно опишу, что нужно сделать, подробности ищите в вышеупомянутой статье.

1. Создадим каталог, в котором будут все нужные конфигурационные файлы. Я назвал ее NEW_PUBLICATOR.

 

 

2. Скачаем файлы платформы для установки 1С. Для это воспользуемся замечательным библиотекой Yet another release downloader (YARD) на oscript. (У всех же установлен oscript, да?)

Установим последнюю версию библиотеки:

opm install yard

И в созданном ранее каталоге вызовем команду:

 

yard releases --user "userITS" --pwd "passITS" get --app-filter "Технологическая платформа 8.3" --version-filter 8.3.18.1208 --path ".\distr\" --distr-filter "Cервер 1С:предприятия \(64-bit\) для DEB-based"

Здесь userITS и passITS нужно заменить на свои, ну и конечно указать нужную вам версию платформы.

В результате в каталоге появится папка distr, содержащая установочные файлы 1С.

 

 

3. Опишем в vrd файле подключение к нашей базе, код блокировки указываем примерно так же, как мы указываем в ключах командной строки при запуске заблокированной базы, параметром UC, но с учетом синтаксиса файла:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		base="/new"
		ib="Srvr=&quot;N26701V&quot;;Ref=&quot;new&quot;;UC=&quot;kod_razresheniya&quot;">
	<debug enable="true"
			protocol="tcp"
			url=""/>
	<httpServices publishByDefault="false">
		<service name="ПомощникАдминистрирования"
				rootUrl="AdminHelper"
				enable="true"
				reuseSessions="autouse"
				sessionMaxAge="20"
				poolSize="10"
				poolTimeout="5"/>
	</httpServices>
</point>

4. Создадим файл для настройки веб-сервера Apache httpd.conf, полный листинг файла прячу за спойлером. Файл стандартный, в конец добавляем вызов модуля 1С и описание публикации:

LoadModule _1cws_module /opt/1cv8/x86_64/8.3.18.1208/wsap24.so

# 1c new
Alias "/new" "/usr/local/apache2/htdocs/new/"
<Directory "/usr/local/apache2/htdocs/new/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "/usr/local/apache2/htdocs/new/default.vrd"
</Directory>

Полное содержимое файла:

 

 

5. Создаем dockerfile - файл описания сборки образа.

FROM httpd:2.4
COPY /distr/Platform83/8.3.18.1208/*.deb /dist/
RUN set -ex; \
   apt update; apt install -y --no-install-recommends \
     inetutils-ping \
     wget \
     curl; \
  rm -rf /var/lib/apt/lists/*
RUN dpkg -i /dist/*.deb \
  && rm /dist/*.deb
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
COPY default.vrd /usr/local/apache2/htdocs/new/default.vrd

Здесь мы указываем, что за основу берется Apache версии 2.4, копируем установочные файлы 1С внутрь образа, устанавливаем их, дополнительно устанавливаем утилиты ping, wget, curl (удобно разбираться из консоли сервера с сетевыми проблемами, если они возникают), копируем ранее созданные конфигурационные файлы httpd.conf и default.vrd также внутрь образа.

6. Создадим docker-compose.yml - файл для описания запуска контейнера.

version: '3.4'
services:
  apache-1c:
    build: .
    restart: always
    ports:
      - 8080:80
    extra_hosts:
      - "N26701V:192.168.88.254"

Здесь я указал, что веб-сервер будет на порту 8080 (внутри контейнера по прежнему порт 80). Также в параметре extra_hosts указал имя и IP адрес моего сервера, на котором развернут тестовый стенд.

7. Запустим контейнер!

docker-compose up -d

Контейнер запустился, отобразился в docker 

 

 

Http-сервис работает на 8080 порту:

 

 

Таким образом я получил свою собственную подконтрольную мне публикацию http-сервиса, документировал ее описание (все конфигурационные файлы версионируются в гит), получил возможность публиковать базы автоматически. Ну и заодно решил свою задачу - теперь мой служебный http-сервис работает даже на заблокированной базе.

 

Для публикации был подготовлен тестовый стенд localhost/N26701V, база 1с new, версия платформы 8.3.18.1208. Ни один рабочий сервер почти не пострадал.

В заключении прошу обратить внимание на то, что в данный момент проводится голосование за доклады, которые войдут в итоговую программу INFOSTART EVENT 2021. Я хотел бы выступить с докладом "Первый день архитектора 1С на новой работе", поэтому мне нужна ваша поддержка в голосовании. Вот ссылка на голосовалку: https://event.infostart.ru/2021/agenda/#item1392878

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. w.r. 631 17.03.21 12:25 Сейчас в теме
Docker и Windows - это вообще адская смесь
2. ardn 443 18.03.21 08:23 Сейчас в теме
(1)
адская смесь

Не соглашусь. Нормально он работает, особенно, когда wsl2 включишь.
5. w.r. 631 18.03.21 13:54 Сейчас в теме
(2)

wsl2 это костыль. По своей сути это адаптированная для Linux виртуализация. А через гипервизор вообще лучше не запускать, там с оптимизацией все очень плохо

Docker нормально работает только в Linux, так как создан именно для этой среды
3. asved.ru 36 18.03.21 09:02 Сейчас в теме
Зачем все это, не понятно. Складывается ощущение, что автору очень сильно нечего делать.
GreenEye; agent00mouse; w.r.; +3 Ответить
4. ardn 443 18.03.21 11:44 Сейчас в теме
(3)
Складывается ощущение, что автору очень сильно нечего делать

хм, спасибо за комментарий
7. agent00mouse 234 13.05.21 10:06 Сейчас в теме
(3) Делаю две публикации. prod и dev. можно хоть на одном апаче и одной машине. можно разнести на разные машины. У себя пользую два апача с отдельной публикацией prod / dev. когда надо prod отключаю.
8. ardn 443 13.05.21 10:15 Сейчас в теме
6. kolhoznik 05.05.21 16:24 Сейчас в теме
Кажется, что ставить в докер всю технологическую платформу ради одного веб-сервера немножко оверхед.
Не пробовали из дистрибутивов достать только необходимые для работы веб-сервера библиотеки? Тогда бы образ получился намного компактнее
9. ardn 443 13.05.21 10:16 Сейчас в теме
(6) да, конечно, надо бы научиться доставать из дистрибов только нужное
10. malikov_pro 1210 04.11.21 22:19 Сейчас в теме
Вынести публикацию в отдельный контейнер хорошо.
Буду благодарен если подскажете как собрать вместе с gatekeeper, описал в статье https://infostart.ru/1c/articles/1538558/.
Для большего удобства не хватает ссылки на организацию registry и выноса конфига 1c из докер контейнера, чтобы можно было переконфигурировать без пересборки.
Сам запускаю docker через vagrant + vmbox.
11. sandman.NN 18.02.22 02:59 Сейчас в теме
для апача необходим только модуль wsap22.so из пакета 1c-enterprise83-ws. Если не планируется использовать webinst (конфиги ручками/скриптом рисуем) то остальное не устанавливать. Да и сам модуль наверное можно пихнуть уже вне deb пакета.

rm /dist/*.deb - вот это лишнее. образ меньше не станет. если всё таки хочется обрезать и образ то следует его перелить в новый по принципу:


FROM чётатам as install
...
...
rm всёлишнее

FROM scratch
COPY --from=install / /
CMD["...."]
Оставьте свое сообщение

См. также

Использование Gatekeeper для авторизации доступа к HTTP публикации сервера 1С

Информационная безопасность Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

В статье опишу вариант настройки Keycloack и GoGatekepper для авторизации доступа к HTTP публикации сервера 1С

22.10.2021    2479    malikov_pro    0    

Обновление платформы 1С тонкого клиента с вебсервера без публикации базы данных, когда сервер 1С ПРОФ.

Администрирование веб-серверов Администрирование СУБД Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Обновление платформы 1С: тонкого клиента с вебсервера описывается здесь: https://its.1c.ru/db/v8316doc#bookmark:adm:TI000001058, (11.2.2. Обновление через диалог публикации на веб-сервере) и здесь: https://its.1c.ru/db/v8319doc#bookmark:adm:TI000000428, (6.2. Получение дистрибутива клиентского приложения) - доступно только для КОРП Для ПРОФ реализация полностью описана в данной статье. Выражаю благодарность Панюшкину Михаилу Михайловичу за разбор задачи и доведение ее до практического результата. Обновление не проходит если например предварительно установка выполнялась регламентными политиками и есть в папке conf файл adminstall.cfg Этот файл следует удалить, чтобы данная установка тонкого клиента проходила успешно Применяется только для системы «1С:Предприятие» под ОС Windows. Файл adminstall.cfg указывает на то, что установка системы программ «1С:Предприятие» выполнялась с использованием средств администрирования ОС Windows. Файл располагается в каталоге конфигурационных файлов системы «1С:Предприятие» и представляет собой текстовый документ в кодировке UTF-8. В файле может располагаться единственная строка, определяющая вариант установки: AdmInstall= Описывает режим установки: Logon - установка выполнена с помощью logon-скрипта во время входа пользователя в домен. Restart - установка выполнена с помощью групповых политик.

19.10.2021    7875    ser6702    28    

Как настраивать кросс-доменные (CORS) запросы к HTTP сервису 1C на веб сервере IIS с сайтом EDIbot

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Сервис EDIbot позволяет отобразить в виде прогрессивного веб приложения, полученный JSON по REST запросу. Разберемся, как решить проблему кросс-доменных запросов на веб сервере IIS для корректной работы HTTP сервиса 1C и сервиса.

21.10.2020    3511    SizovE    0    

Настраиваем PWA приложение на платформе 8.3.18 с бесплатным действительным сертификатом SSL

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Вышла платформа 8.3.18 с поддержкой PWA приложений. Получаем БЕСПЛАТНЫЙ действительный сертификат SSL. Настраиваем прогрессивное веб приложение для опубликованной бухгалтерии 3.0 на IIS сервере.

18.10.2020    9046    IamAlexy    34    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

HighLoad оптимизация WEB-интеграция Мобильная разработка Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    18072    informa1555    35    

Ansible роли для 1С

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Готовые роли для развертывания 1С через Ansible.

24.03.2020    3871    lopatrik    0    

Пошаговая инструкция по установке веб-сервера Apache и завязка с 1С

Инструменты администратора БД Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Данная статья больше предназначена для начинающих администраторов, но «бывалые» тоже могут освежить свои знания и в этой статье в деталях расскажу, как устанавливать Apache и использовать веб-сервер для работы с 1С.

10.03.2020    12564    dy4amaks    9    

Простой пример работы с аутентификацией OpenID на IIS

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

OpenID, аутентификация, HTTPS, получение сертификата SSL, веб-сервер IIS, Internet Information Server, самоподписанный сертификат, самозаверенный сертификат.

26.12.2019    15334    budidich    21    

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    16399    Fragster    11    

Тонкости настройки IIS

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Управляемые формы Управляемые формы Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Тонкости и возможные проблемы при настройке IIS для работы с 1C. С учетом обновления платформ большинство инструкций стало неактуально и отнимает лишние время, заставляя выполнять ненужные пункты.

11.12.2018    73180    kas205    33    

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    36038    petr.myazin    40    

1C + Linux + PostgreSQL + Apache

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем (в 2022-м году).

26.03.2018    89483    SerVer1C    134    

Установка сервера Аpache 2.4

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В публикации описана установка web-сервера Аpache 2.4 на платформе Windows

26.10.2017    178292    ВикторП    20    

Настройка веб сервера Apache + 1С (Пошаговое руководство)

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем через обычный доступ к сетевому каталогу. Эффект особенно заметен, когда старые компы вообще не справляются с обычным сетевым доступом, регулярно выплевывают 1С. А доступ через веб сервер даже на компьютерах серии "Хлам" работает на ура!

19.07.2017    402918    Aleksey81    174    

Публикация базы 1С на веб-сервере Apache на сервере Linux

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В отличие от других подобных публикаций здесь будет описано как опубликовать базу (располагающуюся на сервере windows) на веб-сервере apache (расположенном на соседнем сервере под linux).

20.09.2014    170555    spezc    85    

Windows Azure. Часть 2. Веб-сервер IIS 7.5. Установка

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Продолжаем настройку Windows Azure для работы с 1С. В предыдущей статье, Вы узнали как установить виртуальную машину. В этой статье будут затронуты 3 темы: 1. Установка платформы 1С на виртуальной машине 2. Открытие порта для доступа извне в виртуальную машину 3. Установка Веб-сервера IIS 7.5

08.05.2013    24953    verter.me    16    

Установка 1С:Предприятие 8.3. "Управление небольшой фирмой" на веб-сервер Apache 2.2, работающий в Ubuntu Server 12.04.2 LTS x86_64.

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

На предприятии в качестве файл-сервера используется компьютер, на который установлена операционная система Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-37-generic x86_64). Мне была поставлена задача перенести информационную базу "Управление небольшой фирмой" на веб-сервер Apache установленный на 64-х битной Ubuntu. После переноса ИБ у сотрудников появилась возможность работать через интернет, в любом обозревателе.

17.02.2013    50153    VintikComUa    13    

1С + Apache + SSL: почему вы должны использовать SSL (наглядная демонстрация)

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Иллюстрированных руководств по установке веб-сервера Apache и публикации базы в интернете достаточно. Однако почти никто не обращает внимания на безопасность и не настраивает использование защищенного https протокола, а не http. В этой заметке описана пошаговая установка и настройка Apache, продемонстрирована лёгкость, с которой злоумышленник может узнать ваш пароль, если вы не используете https. Описана пошаговая настройка https для Apache.

06.08.2012    183584    galuse    92    

Настройка веб-сервера в домашних условиях. Часть 2 (VirtualBox + Win7 + Apache + 1C82 + PostgreSQL)

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

В продолжение начатой мной темы "Настройка веб-сервера в домашних условиях (WinXP + IIS + 1C82)". Статья является логическим продолжением и посвящена вопросам повышения безопасности "домашнего веб-сервера".

09.04.2011    37444    1cspecialist    14    

Настройка веб-сервера в домашних условиях. Часть 1 (WinXP + IIS + 1C82)

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Поводом для написания статьи послужила просьба уважаемой администрации сайта infostart.ru в связи с публикацией моей конфигурации Анализатор мобильной связи 8 и объективной необходимостью развития механизма демонстраций разработок на INFOSTART'е.

04.04.2011    76422    1cspecialist    92    

Настройка веб-клиента 1С:Предприятие 8.2 под Windows 7 x64 и IIS.

Администрирование веб-серверов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Возникла необходимость отладить небольшую конфигурацию 1С:Предприятие 8.2 под веб-клиентом. Веб сервером был выбран IIS, являющийся самым родным для ОС Windows. Опыт использования этого сервера в Windows XP подсказывал, что с ним будет меньше проблем чем с Apache, но на недавно установленной Windows 7 x64 все оказалось не так просто. Мелкие проблемы начались с момента попытки публикации веб приложения, а после их устранения коснулись уже веб сервера, настройкой которого платформа 1С:Предприятие 8.2 не занимается. Героически победив все свалившиеся напасти, решил скомпоновать и выложить на всеобщее обозрение свои шаги в достижении цели.

07.06.2010    88689    Provlax    36