Подключение к хранилищу конфигурации через HTTPS

Обмен - Интеграция с WEB

38
В публикации пошагово описывается публикация хранилища на веб сервере и подключение к ней, используя протокол HTTPS и SSL сертификаты.

Преамбула - в силу специфики организации пришлось создать несколько однотипных, не связанных между собой баз на разных серверах с одинаковой обновляемой конфигурацией, что было решено реализовать подключением к единому хранилищу по протоколу HTTPS

Фабула

Общеизвестные и много где описанные шаги тезисно:

1. Из конфигуратора на выбранном сервере создаём хранилище конфигурации, создаём пользователя Windows, даём ему необходимые (все) разрешения на каталог хранилища

2. создаём сервер "crserver.exe -instsrvc -d [каталог хранилища] -usr [пользователь Windows] -pwd [пароль]" и пробуем подключиться к нему из 1С по адресу

tcp://[имя или IP сервера]/[подкаталог если есть].

Утилита crserver лежит в каталоге x86: "C:\Program files\1cv8\[номер версии конфигурации]\bin\"

x64: "C:\Program files\1cv8 (x86)\[номер версии конфигурации]\bin\"

3. устанавливаем IIS

4. в корневом каталоге (по умолчанию C:\inetpub\wwwroot) создаём подкаталог (например REPO) и в нем создаём текстовый файл (например REPO.cr) следующего содержания

<?xml version="1.0" encoding="UTF-8"?>
<repository connectString="tcp://[имя сервера хранилища]"/> 

5.Заходим в IIS Manager находим созданный каталог и конвертируем его в приложение (правой кнопкой Convert to application) заходим в него и добавляем обработчик 1С в Handler mappings (правая кнопка - add script map. Path = *; Executable = "C:\Program Files\1cv8\[номер версии конфигурации]\bin\wsisapi.dll";name = "1C Web-service Extension"). Если сервер x64 а 1с используете x86 то соответственно изменится путь к dll и в advanced settings вашего application pool надо поставить разрешение использовать 32 битные приложения

6. проверяем что хранилище доступно по адресу  http://[имя веб сервера]/REPO/REPO.cr/[Имя подкаталога с хранилищем если есть]

7. далее если при подключении через https появляется ошибка про узел не прошедший проверку необходимо выполнить следующие шаги:

- Импортировать сертификат сервера в локальный компьютер - доверенные центры сертификации (local computer - central root certificate authoriities)

далее если система "не знает" центр сертификации выдавший этот сертификат, необходимо так же:

- импортировать сертификат удостоверяющего центра в хранилище сертификатов локального компьютера - доверенные центры сертификации

- конвертировать сертификат удостоверяющего центра в формат PEM с помощью утилит OpenSSL (для виндоуз брать например там http://slproweb.com/download/Win64OpenSSL_Light-1_1_0h.exe) 

для конвертации можно написать скрипт следующего содержания (прилагается)

C:\OpenSSL\bin\openssl x509 -inform der -in %1.cer -text -outform PEM -out tmp_%1.pem
C:\OpenSSL\bin\openssl x509 -in tmp_%1.pem -noout -fingerprint -md5 > %1.pem
Type tmp_%1.pem >> %1.pem
del tmp_%1.pem

Далее содержимое PEM файла добавляем к файлу 

C:\Program Files\1cv8\[Номер версии конфигурации]\bin\cacert.pem

C:\Program Files (x86)\1cv8\[Номер версии конфигурации]\bin\cacert.pem

И если всё правильно хранилище будет доступно извне по протоколу https

ps. так же крайне необходимо следить чтобы имя сервера IIS которое используется для подключения к хранилища точно совпадало с именем на которое выдан сертификат (в случае расхождений самый простой вариант - внести правки в файл hosts (C:\Windows\System32\drivers\etc\hosts) чтобы IP IIS соответствовало имя из сертификата.

38

Пакетные файлы

Наименование Файл Версия Размер
пакетный файл для конвертации сертификата crt - pem
.bat 0,20Kb
15.08.18
0
.bat 0.9 0,20Kb Скачать

См. также

Комментарии
Сортировка: Древо
1. biformatus 16.08.18 01:41 Сейчас в теме
А есть способ сделать нормальный адрес, например субдомен.домен.ком/имя подкаталога хранилища?
2. ktb 337 16.08.18 07:29 Сейчас в теме
(1)Если адрес доступен "снаружи", то получаете и привязываете к нему dns-имя любым доступным способом. Если не нравится часть адреса "repo/repo.cr", то nginx поможет.
3. KonS 38 16.08.18 09:33 Сейчас в теме
(1) согласен с (2) - это если только средствами веб-сервера.
4. premier 161 22.08.18 08:38 Сейчас в теме
Познавательно. Давно работаю с хранилищем конфигурации, а вот с сервером хранилища пока ещё не сталкивался. Добавлю себе в закладки.
5. KonS 38 22.08.18 09:30 Сейчас в теме
(4)в общем случае можно ограничиться первыми двумя шагами. дальше если есть необходимость дать доступ по слабому и/или защищенному каналу
6. premier 161 22.08.18 09:47 Сейчас в теме
Было бы неплохо ещё и описать работу, например, с Apache (далеко не все используют IIS). Ещё познавательней было бы.
7. KonS 38 22.08.18 10:01 Сейчас в теме
(6)публикации на инфостарте по теме есть и достаточно подробные *например https://infostart.ru/public/646384/ поэтому смысла плодить не вижу. я свои заметки писал, потому как пришлось много источников перелопатить именно по теме https и сертификатов
8. premier 161 22.08.18 10:03 Сейчас в теме
(7) Спасибо за ссылку. Поизучаю.
Оставьте свое сообщение