Добрый день.
В этой статье покажу Вам, как я решал вопрос восстановление обмена между УПП 1.3 и интернет-магазином на платформе Битрикса.
В случае, если у вас в какой-то момент остановился обмен между базой и интернет-магазином.
Перестали приниматься заказы с интернет-магазина в онлайн-режиме. Перестали выгружаться цены, товары и .д. и т.п. Эта статья может помочь найти решение в вашей подобной проблеме.
Сразу вперёд забегу и скажу, что в конечном итоге, в моем случае причиной проблем был перевыпуск нового SSL-сертификата для нашего интернет-магазина.
И так описываю ситуацию.
Сегодня ко мне обратился один из наших менеджеров интернет-магазина и говорит перестали в базу попадать заказы с интернет-магазина, уведомления приходят на почту о создании заказов, а самих заказов нет.
У нас система учета построена на конфигурации "1С Управление производственным предприятием 1.3." УПП 1.3.
Запускаю конфигурацию, сразу-же иду в список настроек обменов
Выбираю проблемный обмен, захожу, в его настройки
Перехожу в монитор обменов
Вывожу красноту красную :)
Переключаюсь на закладку "История"
Вижу что начались проблемы в районе 12 часов дня 24.04.2023.
Ошибка следующего содержания
Выгружено заказов: 4
Не удалось установить соединение с сервером. Авторизация пользователя не выполнена.
Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль,
а также настройки подключения к Интернет.
Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет: Удаленный узел не прошел проверку
Получение данных с сервера: Получен пустой ответ сервера.
Обмен не выполнен
Обмен заказами завершен с ошибками!!!
Пробую протестировать соединение с интернет-магазином
Ошибка выглядит вот так
Не удалось установить соединение с сервером. Авторизация пользователя не выполнена.
Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль,
а также настройки подключения к Интернет.
Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет: Удаленный узел не прошел проверку
Получение данных с сервера: Получен пустой ответ сервера.
Обмен не выполнен
Подобные ошибки для меня не новые, но каждый раз когда они возникают как-то их решал и замечательно забывал вариант решения и в следующий раз опять приходилось решать ребус. Помню, только тот момент, что это проблема была связана с ssl-сертификатом, установленном на сайте. В этот раз решил это дело законспектировать :)
В моем примере я использую браузер Chrome, в других браузерах принцип действий будет аналогичен.
Сразу-же перехожу на сайт интернет-магазина и пробую посмотреть какой ssl-сертификат действует сейчас. Нажимаю на кнопку в виде замка, слева от адресной строки браузера.
Открывается выпадающее меню
Выбираем первый пункт "Безопасное подключение"
Далее "Действительный сертификат"
После чего открывается окно с параметрами ssl-сертификата
Из полученных данных я ещё раз убедился в том, что проблема обмена напрямую связана, с началом действия нового ssl-сертификата.
т.е. 24.04.2023 в 11:58:19 начинает действовать новый ssl-сертификат и после этого у меня нарушается обмен.
Из практики, данная проблема возникает в нескольких случаях:
- Когда переустанавливаешь сервер 1С
- Когда переходишь на другой релиз платформы
- Когда на сайте меняется ssl-сертификат
Типичной ошибкой можно отнести как минимум к таким конфигурациям как УПП 1.3, УТ 10.3, КА 1.2 и я думаю что скорее всего ко всем конфигурациям построенных на обычных формах
Теперь стоял главный вопрос. Как эту ситуацию исправить.
Перелопатил кучу статей как с официального ресурса ИТС, так и посмотрел как другие люди решают подобную задачу.
Из прошлого помню только то, что задача состоит из нескольких этапов
- Сохранить с сайта sss-сертификаты
- Конвертировать эти сертификаты в формат, который поддерживается при размещении в файл cacert.pem
- Поместить конвертированные сертификаты в файл cacert.pem, который расположен к каталоге "bin", текущей версии платформы.
- Протестировать на обычной файловой демобазе
- В случае успеха теста заменить файл cacert.pem на сервере 1с
Сохранение ssl-сертификаты с сайта
Необходимо запустить браузер EDGE, либо обычный стандартный Exploler, в других браузерах просто не пробовал.
ввести в адресной строке, адрес сайта, нажать enter
В открывшемся окне, переходим на закладку "Подобные сведения"
После чего выбираем по очереди ветки сертификата и нажимаем на кнопку "Экспорт..."
После чего открывается окно сохранения сертификата, где присваиваем имя файлу с сертификатом, для примера я называл v0, v1, v2
Обязательно сохраняем только в этом формате
В итоге у вас должно получиться три файла с расширением der
Конвертация сертификатов в формат, который поддерживается при размещении сертификатов в файл cacert.pem
После чего переходим на сайт https://slproweb.com/products/Win32OpenSSL.html ну или подобный
и скачиваем себе дистрибутив, согласно тому какая разрядность на вашем компьютере
Я скачал первый EXE, т.к. у меня стоит 64-х разрадная Windows
Далее устанавливаем программу
Всё стандартно, единственно чтобы потом упростить писать командные строки я установил программу в каталог C:\OpenSSL
Далее запускаем командную строку.
Нажимаем на кнопку поиска, набираем текст cmd. После чего запускаем командную строка от имени администратора
Теперь в командной строке вводим
cd /d c:\OpenSSL\bin
тем самым мы попадаем в каталог программы "Win64 OpenSSL v3.1.0 Light"
После чего отрабатываем три командные строки конвертации сертификатов
openssl x509 -inform der -in C:\temp\SSL\v2\v0.der -out C:\temp\SSL\v2\v0.pem -text -fingerprint -md5
openssl x509 -inform der -in C:\temp\SSL\v2\v1.der -out C:\temp\SSL\v2\v1.pem -text -fingerprint -md5
openssl x509 -inform der -in C:\temp\SSL\v2\v2.der -out C:\temp\SSL\v2\v2.pem -text -fingerprint -md5
После того как это командные строки отработали
в нашем каталоге с сертификатам создались три файла с расширением pem
Каждый из созданных файлов содержит примерно такой текст
После этого содержимое трех созданных файлов необходимо объединить в один, путем простого открытия файлов обычным встроенным текстовым редактором. Я взял и содержимое всех файлов скопировал в файл v0.pem
В итоге у нас появился файл с подготовленными сертификатами для того, чтобы эту информацию можно было разместить в файл cacert.pem каталога BIN текущего релиза и версии платформы. У меня на текущий момент релиз платформы 8.3.22.1851, клиент проверяется 32-х разрядный
Этап конвертации сертификатов окончен.
Поместить конвертированные сертификаты в файл cacert.pem, который расположен к каталоге "bin", текущей версии платформы.
В итоге возвращаемся в каталог текущего релиза платформы под которым мы будем тестировать новый вариант файла cacert.pem
Делаем копию файла cacert.pem, в случае если что-то пойдет не так, всегда можно вернуть исходный вариант файл
После чего из каталога платформы копируем файл cacert.pem, затем вставляем например в другой каталог,
потом вносим в конец файла сформированный наш фрагмент с сертификатами сайта.
После добавления в конец файла cacert.pem наших сертификатов, копируем получившийся файл в каталог с платформой текущего релиза
У меня файл менеджер спросил, что нужно перезаписать существующий файл. Соглашаемся с правами админа
После чего я запустил 32-разрядную файловую демоверсию версию УПП 1.3. внес аналогичные параметры подключения к сайту интернет-магазина.
И проверил подключение
в итоге получил вот такую красоту
Демобаза показала. что подключение прошло успешно. Это говорит о том, что полученный вариант с сертификатами нашего сайт получился.
Теперь можно проверить этот файл на текущей, боевой версией, которая работает у нас в клиент-серверной версии
Тест подключения также прошел успешно.
Этап тестирования добавленных сертификатов, можно считать завершённым.
Теперь переходим к финишному этапу, это перенос файла, который у нас получился на машине в каталог текущей версии платформы на сервере 1С. Важно обращать внимание на то какая разрядность у вашего сервера 1С.
Это необходимо сделать в том случае если у вас есть к примеру онлайн обмены с сайтом и другие процедуры, которые отрабатывают в серверном варианте.
Это сделать можно простым способом, зайти на сервер 1С, перейти в список службу, найти агента сервера 1С, название имени службы дает понять какой вариант сервера используется в вашем случае
Далее заменил файл со своей машины на сервере 1С, предварительно скопировав оригинальный вариант файла cacert.pem.
После того как мы поменяли файл cacert.pem на сервере 1С, возвращаемся в настройки обмена с интернет-магазином и видим, что обмен в итоге восстановлен
Вопрос с восстановлением обмена с интернет-магазином компании решён.
Более подробный ход событий в видео ниже.
Буду рад если кому-то это статья поможет решить свою проблему с интеграцией между конфигурацией 1С и интернет-ресурсом с ssl-сертификатом.
Всем спасибо, ктор дочитал текст до конца :)...