1c https не работает
Использование веб-сервера и публикаций информационных баз — один из способов оптимизации 1С. Особенно при работе с ИБ в файловом варианте. Так безопаснее. Сотрудники подключаются к ИБ 1С через браузер или тонкий клиент , не имея прямого доступа к файлам.
В статье расскажем, как решали возникающие вопросы по настройкам Internet Information Services. Через призму своего опыта и коллег.
Подробнее описано здесь . В проекте использовали бесплатный SSL-сертификат Let's Encrypt. Но поспешили отключить внешние соединения на 80-й порт — что было ошибкой.
Сертификат выдается сроком на 90 дней. Для автоматического продления создается периодическое задание в Планировщике. При запуске задачи сайт должен быть доступен (пройти проверку домена) по 80-му порту.
II. Типовая настройка и публикация информационных баз на IIS
На что обратить внимание:
1. Состав компонентов IIS — в Интернете полно инструкций и указаний. Повторяться не будем.
2. Установка 1С необходимой разрядности . Варианта 2: x86 (32-разрядное приложение) или x64. Обязательно выбираем «Модули расширения веб-сервера».
3. Права для встроенной группы /пользователю веб-сервера (IUSR) на папки:
- с установленной платформой — на «чтение и выполнение» (для старта процессов);
- самих расположений ИБ — на «изменение» (в случае файлового варианта).
4. Публикация базы через Конфигуратор 1С . Возможно потребуется открыть программу с повышенными правами — «Запуск от имени администратора».
5. Для 32-разрядного клиента 1С в диспетчере IIS включаем разрешение запуска ( DefaultAppPool — Дополнительные параметры — Разрешены 32-разрядные приложения = True ). Для 1C x64 — значение не меняем.
6. На странице сопоставления обработчиков для «1С Web-service Extension» потребуется указать путь к исполняемому модулю :
- x86 — «C:\Program Files (x86)\1cv8\8.3.x.xx\bin\wsisapi.dll»;
- x64 — «C:\Program Files\1cv8\8.3.x.xx\bin\wsisapi.dll».
Либо изменяем путь к библиотеке в файлах web.config через Блокнот (располагается, как правило, в c:\inetpub\wwwroot\).
Если в п. 2 все сделано правильно — по указанному пути должен присутствовать файл wsisapi.dll.
7. В частных случаях требуется перезапуск служб IIS . Выполните «Перезапустить» в оснастке управления или перезагрузите сервер.
✅ Соблюдаем соответствие разрядности: если запускаем и публикуем 64-разрядный клиент 1С:Предприятие, то dll также должна быть 64-битной версии.
Если публикуем 32-разрядную версию 1С, то ставим разрешение запуска 32-разрядных приложений на IIS и проверяем путь к wsisapi из каталога x86.
IV. Ошибка сервера в приложении '/AO_SSR'
Информационная база 1C опубликована на IIS. При работе через тонкий клиент, при нажатии на «Отчеты» вываливается ошибка.
« Ошибка сервера в приложении '/AO_SSR'. Обнаружено потенциально опасное значение Request.Path, полученное от клиента.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
✅ Откройте настройки пула приложений и проверьте «Режим управляемого конвейера» = «Classic».
Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С. Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).
Если пользователю будет необходим нетиповой обмен между базами и публикация баз будет возможна (установлен WEB-сервер), то можно воспользоваться механизмом WEB-сервисов.
Определение WEB-сервиса — реализация абсолютно четких интерфейсов обмена данными между различными приложениями, которые написаны не только на разных языках, но и распределены на разных узлах сети. Но в нашем примере мы разберем обмен между двумя базами 1С.
В базе-источнике требуется создать объект конфигурации: WEB-сервисы
В базе приемнике создаем объект конфигурации: WS-ссылки
WS-ссылка содержит описание WEB-сервиса из базы-источника. Этот объект конфигурации не имеет программного кода и представляет собой только модель данных и описание операций созданного в базе-источнике WEB-сервиса.
Пример описания WS-ссылки (рис.1)
Рис. 1 – описание WS-ссылки
Важным параметром является то, что данную ссылку мы можем открыть в браузере и посмотреть текстовое описание WEB-сервиса (рис.2). Если в браузере WEB-сервис не открывается, то и созданная WS-ссылка работать не будет
Рис. 2 – описание WEB-сервиса
Если мы откроем WS-ссылку, которая корректно загружена, то увидим вот такую картину (рис.3)
Пакеты, которые автоматически подключаются (ветка пакеты)
Сам WEB-сервис, к которому идет обращение и его операции, которые описаны в базе-источнике.
Операции WEB-сервиса описываются функциями встроенного языка. То есть – любая операция веб-сервиса должна возвратить какое-либо значение. Тип возвращаемого значения можно указать в описании операции WEB_сервиса (рис 4.2).
Типы возвращаемых значений мы указываем в свойстве непосредственно WEB-сервиса «Пакеты XDTO». Механизм XDTO позволяет определять объекты переноса данных, которые могут образовывать строгую иерархию и могут сериализоваться в XML. Эти свойства позволили использовать объекты XDTO в качестве параметров и возвращаемых значений операций web-сервисов.
Рис. 4.1 – описание WEB-сервиса
Рис. 4.2 – описание операции WEB-сервиса
После того, как мы описали функцию WEB-сервиса, которая будет вызываться из базы-приемника (в задаче: база приемник инициализирует обращение к базе-источнику, но этот механизм можно построить и наоборот, что база-источник будет отдавать данные в базу-приемник, тогда нам следует описывать WEB-сервис в базе-приемнике, а в базе-источнике будет WS-ссылка на него. Все зависит от конкретной задачи)
Описание вызова WEB-сервиса (Листинг 1)
Указать сертификат ssl
Организовать обращение к WS-ссылке с использованием метода: СоздатьWSПрокси – в методе прописывается
URL-пространство имен, (*) – описывается в Web-сервисе (см. рис 4.1),
имя сервиса (*)– описывается в Web-сервисе (см. рис 4.1),
имя порта (*) – описывается в WS-ссылке, см
использование аутентификации WINDOWS
Описание создания защищенного ssl-соединения (синтаксис-помощник 1С; листинг 2)
Листинг 2 - Возможные описания объекта защищенного соединения OpenSSL (1С помощник)
Объект защищенного соединения OpenSSL.
Используемый клиентский сертификат должен быть самоподписанным или проходить валидацию через сертификаты удостоверяющих центров, заданные в свойстве "СертификатыУдостоверяющихЦентров"
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Листинг 2 – описание возможных описаний объекта защищенного соединения OpenSSL
Выбор корректного описания зависит напрямую от того, с каким сертификатом работает организация.
Если все корректно, то в переменную «ответ» (листинг 3) вернется значение из базы-источника. Так же тут указываем сразу параметры, которые требуются для передачи в операцию WEB-сервиса
Листинг 3 – Строка обращения к операции WEB-сервиса
Обрабатываем полученные результаты. И тут может быть два варианта.
Мы получили сразу объект того типа, который указывали в выходных параметрах. Нам его нужно просто обработать средствами встроенного языка – извлечь из него требуемые данные (если это таблица значений, структура или хранилище значений, как в нашем случае).
WEB-сервер нам возвращает закодированный ответ в виде строки BASE64. Этот случай опишем подробнее.
Если WEB-сервер нам возвратил закодированную строчку, то требуется выполнить преобразование ее в объекты 1С. Для этого нам следует сделать несколько преобразований:
BASE64 в двоичные данные (используем функцию встроенного языка 1С:
ДвоичныеДанные = Base64Значение(Ответ); (где ответ – это значение, которое возвращено WEB-сервером)
Используем фабрику XDTO для представления двоичных данных в объекте 1С (листинг 4)
Фабрика типов XDTO: Содержит определения всех типов, позволяет осуществлять чтения/запись данных XDTO в XML и JSON (материал Синтаксис-помощника).
Листинг 4 – использование фабрики XDTO для преобразования двоичных данных в объект 1С -
Создаем значение XDTO по лексическому представлению значения. Лексическое представление значения должно удовлетворять ограничениям, определяемым данным типом значения XDTO. Тип нашего XDTO (параметр 1 – является обязательным) должен совпадать с типом выходного параметра функции WEB-сервиса (см. Рис 4.2). Описываем пространство имен (URIПространстваИмен (NamespaceURI)) и БазовыйТип (BaseType). Вторым параметром в функцию подставляем наши двоичные данные (без преобразования их в объекты). Если все выполнено корректно, то наше выходное значение из WEB-сервиса будет содержаться в реквизите: телоXDTO.Значение, того типа, который мы указали в выходном параметре ("ValueStorage" – хранилище значения).
Работа непосредственно с получением данных через WEB-сервис на этом заканчивается.
Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С.
Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).
Так же этот вариант применим при необходимости получать данные из одной базы в другую (пример – получение остатка бюджета из одной базы (источник) при заведении нового счета на оплату (в сторонней базе)).
Привет Хабраюзер хочу поделиться своим недавним опытом интеграции двух различных систем.
Возникла задача о передаче данных между 1С (разработка и настройка была отдана на аутсорсинг), которую планируется использовать как основную систему электронного документооборота (ЭДО) и B2B системой (внутренняя разработка), которая написана на PHP (Symfony) и выполняет функции первичного ввода информации в компании.
У меня уже был опыт интеграции B2B с другой B2B. Суть заключалась к передаче JSONа при помощи cURL. Затем возникла задача интеграции системы «Borlas», основанная на Oracle, где также был применен данный подход. На стороне Oracle, правда, использовался свой пакет — аналог cURL в PHP (если будет интересно, могу описать в новой статье).
Как я выяснил, 1С 8.2 тоже умеет посылать GET и POST запросы. Предположил, что если уже все настроено и работает с другими системами, значит, и тут должно сработать. JSON отвергли разработчики 1С, сказав, что формат неподходящий и они признают только XML. Комментарии о том, что это нам даст минимум в размере при передаче данных, а данных действительно получалось очень много, были отвергнуты. В итоге приступили в подготовке 2 систем на основе XML.
Cо своей стороны я написал приемщик запросов из 1С и возврат результатов. Функция по приему переменной в POST, в которой 1Сники должны были подставлять XML.
Формат примерно следующий:
обработчик, который возвращает уже отобранные по условиям записи и формирует XML вида:
На первый взгляд, кажется, что все просто, но в процессе возникло несколько проблем:
1) аутсорсеры сообщили, что малознакомы с запросами такого рода, и попытались предложить старую проверенную схему:
1. импорт файла из B2B,
2. Загрузка в 1С,
3. Экспорт файла с указанием, что смогли обработать, что нет из 1С,
4. Импорт в Б2Б,
5. и с самого начала…
Схему отвергли, так как нужно быстро, и без участия человека и всяких «кнопочек».
Тогда попросили пример кода. В интернете я «нагуглил» следующий пример:
На сервер стали приходить данные, но пустые, то есть GET и POST были пустые. Я добавил запись что приходит в логи и успешно забыл об этом. Спустя 4 месяца мне была поставлена срочная задача — довести интеграцию до результата (так как прошло много времени, разработчики 1С работают, работают, но в ответ ничего не приходит). Мне поставили 1С и я начал «ковыряться».
В итоге это «Иначе» было выкинуто, и получил ошибку, что некорректный сертификат. Сертификат был само подписной. Разработка интеграции велась на внутренних серверах, где официально купленного сертификата от «Thawte SSL CA» в отличии от PROD сервера. Импорт сертификата во все возможные хранилища не привел к результату.
Поиск по ресурсам привел к тому, что все сертификаты корневые у 1С свои, и на основе них она уже проверяет остальные. Они лежат в тестовом виде в файле «cacert.pem», который расположен в папке «bin», где стоит 1С. Импорт, не так прост, как оказалось.
Для начала надо экспортировать нужный нам сертификат в файл (он у меня уже был в личном хранилище). Запустив «certmgr.msc», найдя сертификат, делаем его экспорт в файл *.cer.
Далее качаем программку Win32OpenSSL и преобразовываем его в тестовый вид.
У меня это получилось так:
MD5 сохраняем, он нам понадобится.
Далее открываем файл «cacert.pem».
Спускаемся в самый низ и добавляем сперва MD5, а потом все содержимое, что получилось в файле «fiddler.pem».
Сохраняем файл.
Перезапускаем 1С (возможно и не надо, но у меня не заработало, поэтому я перезапустил все.
Исходный файл в 1С был приведен в такой вид:
Готов поделиться информацией о злоключениях с настройкой Oracle и B2B.
Там использовался тот же механизм, передача данных в POST запросе, но были свои подводные камни. В принципе, там оказалось все проще.
21 апреля пользователи Сети начали сообщать о проблемах с работой всех сервисов 1С. Недоступны обновления, невозможно зайти в личный кабинет и на сервис ИТС, не работает ЭДО и 1С:отчётность. 25 числа необходимо подавать отчёт в налоговую, но его невозможно подготовить из-за сбоя.
В официальном Telegram-канале 1C:Франчайзи появилась информация, что доступ к сервисам пропал из-за DDoS-атаки на ресурсы 1С и часть сайтов компании.
По неподтверждённой информации, кроме 1C DDoS-атаке подверглись РАР и ФСС.
Информационная служба Хабра направила 1С запрос с просьбой дать официальный комментарий по ситуации. Как указали в компании:
«С 21 апреля происходят DDoS-атаки на различные сервисы для учёта и отчётности в организациях, в том числе на ресурсы 1С. Часть наших сайтов и сервисов была временно недоступна или работали медленно и неустойчиво. На данный момент восстановлено нормальное функционирование большинства интернет-ресурсов и сервисов 1С, включая 1С:ЭДО и 1С-Отчетность. DDoS-атаки продолжаются, технические специалисты 1С отслеживают ситуацию и принимают усилия для обеспечения нормального функционирования интернет-ресурсов и сервисов 1С. Угрозы для данных пользователей не наблюдается, они не пострадали и надёжно защищены».
Несмотря на заявление компании, пользователи Сети продолжают жаловаться на полное прекращение работы 1С. В частности, пользователь Хабра @nat_young рассказал, что со вчерашнего дня в работе сервисов практически ничего не изменилось.
Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.
Жмем Next > Next > Next. Выбираем Typical.
LoadModule ssl_module modules/mod_ssl.so
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCache none
5. Из каталога bin установленной папки с Apache cкопируем файлы ssleay32.dll и libeay32.dll в C:\Windows\System32 . Так же скопируем файл openssl.cnf из папки c:\Program Files\Apache Software Foundation\Apache2.4\conf\ в папку c:\Program Files\Apache Software Foundation\Apache2.4\bin\.
6. Запустим редактор реестра regedit (Пуск > Выполнить ввести текст regedit и нажать Enter) откроется окно реестра в нем найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4
В этой ветке найдем переменную ImagePath и два раза кликнем на ней.
7. Добавим SSL-сертификаты для домена. Тут есть варианты.
7.1. Если у Вас уже есть SSL-сертификаты для домена, то создайте папку ssl в папке C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместите их туда (файлы *.key и *.cert). Идем на шаг 8.
7.2. Если у Вас нет SSL-сертификатов, то вы можете их сгенерировать самостоятельно.
7.2.1. Открываем командную строку в режиме администратора и переходим в папку bin Apache. Вводим команду:
cd "C:\Program Files\Apache Software Foundation\Apache2.4\bin"
7.2.2. Далее вводим:
openssl req -config openssl.cnf -new -out ssl.csr
Идем по шагам в командной строке и заполняем необходимые поля. То, что вы введете не принципиально. Самое главное на этом этапе надо запомнить пароль (когда спросит pass phrase)
openssl rsa -in privkey.pem -out ssl.key
Спросит пароль, который вы вводили ранее.
openssl x509 -in ssl.csr -out ssl.cert -req -signkey ssl.key -days 3000
days - это срок действия сертификата в днях.
7.2.5. Ну и наконец:
openssl x509 -in ssl.cert -out ssl.der.crt -outform DER
7.2.6. Создадим папку ssl в C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместим из папки bin файлы ssl.key и ssl.cert (а вообще можно все сразу туда скопировать, что было получено на шагах 7.2.1. - 7.2.5) из C:\Program Files\Apache Software Foundation\Apache2.4\bin в C:\Program Files\Apache Software Foundation\Apache2.4\conf\ssl.
9. Перезапустим Apache. Открываем Monitor в правом нижнем углу, щелкнем по иконке и нажимаем restart. Если все хорошо, то Apache запустится без ошибок и появится зеленый значок.
III. Если клиент 1С зависает при подключении к базе по web
Прежде посмотрите этот материал — там общие рекомендации.
Другой случай. Файловая ИБ опубликована на IIS. После авторизации зависает на эмблеме 1С. При открытии Конфигуратора — все нормально.
В журналах Windows ошибка «Процесс, обслуживающий пул приложений "1С", не ответил на команду ping».
- проверьте права на папку с базой 1С для IUSR/IIS_IUSRS, уровень доступа — на «изменение»;
- в оснастке IIS «Пулы приложений — — Дополнительные параметры — Модель процесса» задайте для « Максимальная задержка отклика при проверке связи » значение, превышающее 90 секунд;
- посмотрите на поведение IIS при «Проверка связи включена» = False.
📝 Из справки: установка [pingingEnabled] (Проверка связи) в значение false не позволит IIS проверять, выполняется ли рабочий процесс, и таким образом сохранит его активным до остановки процесса отладки.
✅ Установка «Максимальное время отклика пинга» в большое значение позволит IIS продолжать наблюдение за рабочим процессом.
Читайте также: