Как настроить автоматический запуск веб-клиента 1С по протоколу HTTPS из Конфигуратора

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке и тестировании веб-клиента «1С:Предприятие» в защищенном режиме часто возникает неудобство: при нажатии клавиши F5 или кнопки начала отладки в Конфигураторе, система автоматически запускает браузер по протоколу http://. Разработчикам приходится каждый раз вручную дописывать букву «s» в адресной строке браузера, чтобы переключиться на безопасное соединение https://.

В этой статье мы подробно разберем, почему так происходит, устраним популярные заблуждения из обсуждений на форумах и рассмотрим три практических способа настройки веб-сервера Apache 2.4 под управлением Windows для автоматического перенаправления (редиректа) запросов на HTTPS.

Почему Конфигуратор 1С упорно открывает HTTP?

Давайте проанализируем поведение самой платформы «1С:Предприятие». В диалоговом окне «Публикация на веб-сервере» (которое открывается через меню Администрирование -> Публикация на веб-сервере) физически нет настроек, позволяющих выбрать протокол по умолчанию. 1С оперирует только именем публикации и физическим каталогом на диске.

При компиляции и запуске отладки Конфигуратор генерирует URL-адрес по жестко зашитому шаблону, всегда подставляя префикс http://. Изменить это внутреннее поведение платформы невозможно. Единственное правильное и архитектурно верное решение — настроить сам веб-сервер Apache так, чтобы он налету перехватывал незащищенные запросы на порту 80 и перенаправлял их на защищенный порт 443.

Развенчание мифов: почему файл hosts здесь не поможет

В процессе обсуждения подобных проблем на форумах часто можно встретить совет отредактировать системный файл Windows по пути C:\Windows\System32\drivers\etc\hosts. Проанализируем этот совет.

Это грубая ошибка! Файл hosts является локальной альтернативой службы DNS (Domain Name System). Его единственная задача — сопоставлять текстовые доменные имена (например, mysite.local) с IP-адресами (например, 127.0.0.1). Файл hosts работает на сетевом уровне и абсолютно ничего не знает о протоколах передачи данных (HTTP/HTTPS) и номерах портов (80/443). С его помощью невозможно настроить перенаправление. Все манипуляции мы будем проводить исключительно в конфигурационных файлах самого веб-сервера Apache.

Перед тем как приступить к настройке любого из способов, обязательно откройте ваш текстовый редактор (например, Блокнот или Notepad++) от имени Администратора. В противном случае операционная система Windows не разрешит вам сохранить изменения в защищенных папках программ.

Способ 1. Глобальный редирект через httpd.conf (наиболее рекомендуемый)

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

Выполним следующие шаги:

  1. Перейдем в каталог установки вашего веб-сервера Apache (по умолчанию в Windows это может быть C:\Apache24\conf\ или папка внутри каталога публикации, в зависимости от того, как вы устанавливали веб-сервер).
  2. Откроем файл httpd.conf.
  3. Найдем строку подключения модуля переопределения адресов mod_rewrite. Для этого воспользуемся поиском по файлу и найдем строчку: LoadModule rewrite_module modules/mod_rewrite.so. Если в начале этой строки стоит символ решетки #, обязательно удалим его, тем самым активировав модуль.
  4. Прокрутим файл в самый конец и добавим следующий блок конфигурации, который будет перенаправлять все входящие запросы с порта 80 на порт 443 с сохранением пути:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  1. Сохраним файл httpd.conf.
  2. Перезапустим службу Apache. Это можно сделать через стандартную оснастку Windows «Службы» (нажмите Win+R, введите services.msc, найдите службу Apache и нажмите «Перезапустить») или с помощью утилиты Apache Monitor в трее.

Теперь при нажатии F5 в Конфигураторе 1С откроется ссылка http://localhost/имя_базы, но Apache мгновенно вернет браузеру статус 301 (постоянное перенаправление), и страница автоматически перезапустится по адресу https://localhost/имя_базы.

Способ 2. Локальный редирект через файл .htaccess

Иногда требуется настроить редирект не для всего веб-сервера целиком, а только для конкретной публикации 1С. Для этого используется файл дополнительной конфигурации .htaccess, располагающийся в каталоге публикации базы (там же, где лежит файл default.vrd).

По умолчанию в Apache под управлением Windows обработка файлов .htaccess отключена в целях повышения производительности. Разберем, как её включить и настроить по шагам:

  1. Откроем основной файл конфигурации Apache httpd.conf.
  2. Найдем блок описания прав для корневой директории документов. Он выглядит примерно так:
    
    <Directory "C:/Apache24/htdocs">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  3. Заменим директиву AllowOverride None на AllowOverride All. Это разрешит веб-серверу читать файлы конфигурации .htaccess в подкаталогах.
  4. Сохраним httpd.conf и перезапустим службу Apache.
  5. Перейдем в каталог публикации нашей информационной базы 1С (путь к нему можно посмотреть в Конфигураторе в окне публикации). Там уже должен находиться файл default.vrd.
  6. Создадим в этой папке новый текстовый файл. Чтобы правильно задать ему имя в Windows, при сохранении в Блокноте в поле «Тип файла» выберем «Все файлы (*.*)» и введем имя .htaccess (обратите внимание на точку в начале и отсутствие расширения .txt).
  7. Запишем в созданный файл следующие строки:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Этот способ удобен тем, что настройки применяются мгновенно без необходимости перезапускать весь веб-сервер Apache при каждом изменении файла .htaccess.

Способ 3. Перенаправление на уровне браузера (HSTS)

Современный и безопасный метод — использование механизма HSTS (HTTP Strict Transport Security). При таком подходе веб-сервер при первом же успешном обращении по HTTPS передает браузеру специальный заголовок. Браузер запоминает, что к этому сайту (в нашем случае к localhost) нужно обращаться исключительно по HTTPS. В дальнейшем, когда 1С будет пытаться открыть ссылку по HTTP, сам браузер преобразует запрос в HTTPS еще до отправки его на сервер.

Для настройки выполним следующие действия:

  1. В конфигурационном файле httpd.conf раскомментируем (уберем символ #) модуль заголовков: LoadModule headers_module modules/mod_headers.so
  2. Найдем блок настроек вашего виртуального хоста, работающего на порту 443 (обычно он находится в файле conf/extra/httpd-ssl.conf или в самом httpd.conf внутри тегов <VirtualHost *:443>).
  3. Добавим внутрь этого защищенного виртуального хоста директиву:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  1. Перезапустим службу Apache.
  2. Один раз вручную откроем нашу базу в браузере по протоколу HTTPS.

Браузер получит этот заголовок и запомнит правило на один год (значение параметра max-age в секундах). Теперь при нажатии F5 редирект будет происходить мгновенно на уровне клиентского приложения.

Важные нюансы настройки отладки по HTTPS

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

Чтобы отладка работала стабильно в условиях использования SSL, настроим в 1С отладку по протоколу HTTP:

  1. В Конфигураторе перейдем в меню Сервис -> Параметры.
  2. Откроем вкладку Запуск 1С:Предприятия, затем перейдем на вложенную вкладку Дополнительно.
  3. В группе параметров «Отладка» установим переключатель в положение Отладка по протоколу HTTP.
  4. Снова откроем окно Администрирование -> Публикация на веб-сервере.
  5. На вкладке Прочие параметры убедимся, что установлена галочка Разрешить отладку, а в поле «Адрес отладчика» система автоматически прописала правильный локальный URL (например, http://localhost:1561). При необходимости выполним повторную публикацию.

Полезный совет: в процессе тестирования различных способов редиректа обязательно очищайте кэш вашего браузера. Современные браузеры (особенно Google Chrome и Яндекс.Браузер) очень агрессивно кэшируют перенаправления со статусом 301. Если вы измените настройки в файлах конфигурации Apache, браузер может продолжать использовать старое (возможно, ошибочное) правило из своего локального кэша.

← На главную