====== Публикация баз данных «1С:Предприятия» 8.3 на веб-сервере IIS в Microsoft Windows Server 2012/2016 ====== По мотивам http://tavalik.ru/nastrojka-veb-dostupa-k-bd-1spredpriyatie-na-iis и еще некоторых собранных заметок Для публикации требуются следующие шаги: * Установка веб-сервера IIS * Установка веб-компонентов 1С * Настройка прав пользователей * Публикация базы 1С * Настройка IIS * Настройка сертификата Let's Ecrypt (опционально) ===== Установка веб-сервера IIS ===== IIS устанавливаем традиционно через Диспетчер серверов (Server Manager). Должны быть установлены следующие компоненты: Установка веб-сервера IIS Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты: * Общие функции HTTP (Common HTTP Features) * Статическое содержимое (Static Content) * Документ по умолчанию (Default Document) * Обзор каталогов (Directory Browsing) * Ошибки HTTP (HTTP Errors) * Разработка приложений (Application Development) * ASP * ASP.NET 3.5 * Расширяемость .NET 3.5 (.NET Extensibility 3.5) * Расширения ISAPI (ISAPI Extensions) * Фильтры ISAPI (ISAPI Filters) * Исправление и диагностика (Health and Diagnostics) * Ведение журнала HTTP (HTTP Logging) * Монитор запросов (Request Monitor) * Средства управления (Management Tools) * Консоль управления IIS (IIS Management Console) После переустановки может понадобится перезагрузка сервера. ===== Установка веб-компонентов 1С ===== На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты: * 1С:Предприятие * Модули расширения веб-сервера Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера и установить компоненту: * Модуль расширения веб-сервера ===== Настройка прав пользователей ===== Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию **C:\inetpub\wwwroot\** ) необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties). Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию **C:\Program Files (x86)\1cv8\** для 32-разрядного модуля расширения и **C:\Program Files\1cv8\** для 64-разрядного) группе IIS_IUSRS. ===== Публикация базы 1С ===== Запускаем от имени Администратора (Run as Administrator) «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. В меню выбираем «Администрирование» —> «Публикация на веб-сервере…» Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию: * Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита. * Веб-сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services. * Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения. * Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису. * Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг. Выбрав необходимые настройки публикации нажимаем «Опубликовать». ===== Настройка IIS ===== Включаем поддержку 32-х разрядных приложений: Пулы приложений (Application Pools) -> DefaultAppPool -> Дополнительные параметры (Advanced Settings) -> Разрешены 32-разрядные приложения (Enable 32-Bit Applications) установить в True Для каждой опубликованной базы необходимо проверить настройки Сопоставления обработчиков (Handler Mappings). 1C Web-service Extension должен указывать на текущую версию 1С, например **C:\Program Files (x86)\1cv8\8.3.12.1469\bin\wsisapi.dll** и если была установлена новая конфигурация - данные настройки необходимо скорректировать. ===== Ошибка "A potentially dangerous Request.Path value was detected from the client" ===== Ошибка говорит, что проблема в настройках безопасности сервера IIS. Для того, чтобы обойти общие настройки безопасности, необходимо отредактировать файл публикации «web.config», который находится в каталоге с вашей публикацией, а именно: 1. Добавить параметр в раздел system.webServer: 2. Добавить параметр в раздел configuration и перезапустить IIS. Функциональность будет полная. После повторной переопубликации базы из 1С изменения нужно будет вносить заново. ===== Настройка сертификата Let's Ecrypt ===== Что должно быть сделано: * Отдельное доменное имя и правильно настроенный DNS * Открыты (или проброшены) порты 80 и 443 * Опубликован сайт Загружаем последний релиз с сайта https://github.com/Lone-Coder/letsencrypt-win-simple/releases и распаковываем куда-нибудь, например в C:\inetpub\letsencrypt Запускаем letsencrypt.exe, вводим адрес e-mail (любой) и соглашаемся с условиями использования. Выбираем наш опубликованный сайт, ждем некоторое время чтобы сертификат установился. Проверяем полученный сертификат при помощи какого-нибудь сервиса, например https://www.sslshopper.com/ssl-checker.html Готово, можно пользоваться. {{:software:1c:pasted:20200915-163451.png}} ===== Настройка редиректа с HTTP на HTTPS ===== Чтобы сделать редирект (перенаправление) HTTP на HTTPS нужно установить модуль Microsoft URL Rewrite Module: * Качаем последний релиз со страницы проекта https://www.iis.net/downloads/microsoft/url-rewrite * Убедиться, что в настройках сайте не включена опция обязательного использования SSL (Require SSL) * Визуальная настройка делается через оснастку IIS, в свойствах сервера (или сайта, смотря куда требуется подключить) открываем "URL Rewrite", добавляем правило (Add Rule(s) и заполняем поля: * Выбираем Inbound Rules / Blank Rule * Name: HTTP to HTTPS Redirect * Pattern: (.*) * Разворачиваем Conditions, добавляем (Add): * Condition Input: {HTTPS} * Pattern: ^OFF$ * Ignore Case: включено * Action Properties: https://{HTTP_HOST}/{R:1} * Append query string: включено * Применяем (Apply) и пробуем * Второй вариант: отредактировать файл web.config, в раздел добавить правило: {{tag>1С IIS веб-компоненты let's_encrypt}}