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

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

Часто в процессе интеграции 1С с внешними системами или мобильными приложениями возникает жесткое требование: обмен данными должен происходить строго по протоколу HTTPS. Однако настройка собственного веб-сервера (IIS или Apache) с покупкой и установкой SSL-сертификата может казаться избыточной или сложной задачей, особенно если нужно быстро протестировать функционал или если у сервера нет статического «белого» IP-адреса.

В этой статье мы подробно разберем, как решить проблему «HTTPS без сертификата» на стороне 1С, используя современные методы проксирования, туннелирования и облачные сервисы. Разберем ситуацию, когда ваш 1С-сервер отдает данные по обычному HTTP, а клиент видит их по защищенному HTTPS.

Метод 1: Использование специализированных сервисов-посредников (Reverse Proxy)

Рассмотрим ситуацию, предложенную в обсуждении. Существуют сервисы, которые выступают в роли «моста». Они предоставляют вам публичный адрес с готовым SSL-сертификатом, принимают на него запросы и пересылают их на ваш локальный сервер.

Одним из таких инструментов является специализированный VPN/Прокси сервис для 1С. Проанализируем схему его работы:

  1. Ваш сервер 1С (на котором опубликован HTTP-сервис) подключается к сервису-посреднику по VPN или через специальный агент.
  2. Сервис выдает вам доменное имя вида https://vash-domain.service.ru.
  3. Внешний клиент обращается по этому адресу. Сервис-посредник расшифровывает трафик и передает его внутрь вашего туннеля на локальный http://localhost:80/base/hs/....

Этот способ идеален, если у вас нет белого IP-адреса или сервер находится за глубоким NAT провайдера. Потребитель данных (клиент) при этом видит валидный сертификат, выданный доверенным центром сертификации на домен посредника.

Метод 2: Использование Cloudflare и режима Flexible SSL

Если у вас есть зарегистрированный домен и «белый» (даже динамический) IP-адрес, мы можем воспользоваться мощностями Cloudflare. Это один из самых простых способов «одеть» старый HTTP в современный HTTPS без единой строчки кода в 1С.

Разберем по шагам настройку режима Flexible SSL:

  1. Добавьте ваш домен в панель Cloudflare и делегируйте управление DNS на их серверы.
  2. В разделе SSL/TLS выберите режим Flexible. В этом режиме трафик от пользователя до Cloudflare идет по шифрованному HTTPS, а от Cloudflare до вашего сервера — по обычному HTTP.
  3. Настройте A-запись, указывающую на ваш IP-адрес.

Важный нюанс: поскольку соединение между Cloudflare и вашим сервером остается открытым (HTTP), этот метод подходит для данных, не имеющих критической важности, или если вы доверяете каналам связи между вашим провайдером и узлами Cloudflare. Для 1С это выглядит как обычный входящий запрос на 80-й порт.

Метод 3: Использование туннелей (Cloudflare Tunnel, Ngrok)

Проанализируем ситуацию, когда установка VPN невозможна, а проброс портов на роутере закрыт. В этом случае на помощь приходят современные туннели. Рассмотрим работу с Cloudflare Tunnel (cloudflared).

Это небольшая утилита, которая устанавливается прямо на сервер с 1С и устанавливает исходящее соединение с облаком. Вам не нужно открывать порты на вход. Посмотрим, как это работает:


# Пример команды для запуска туннеля на сервере
cloudflared tunnel --url http://localhost:8080

После запуска утилита создаст временный или постоянный адрес https://unique-name.trycloudflare.com. Все запросы к нему будут мгновенно перенаправлены на ваш локальный веб-сервер 1С. Сертификат HTTPS при этом предоставляется автоматически и бесплатно.

Метод 4: Локальный обратный прокси на базе Nginx

Если вы хотите контролировать весь процесс самостоятельно и имеете доступ к настройкам сервера, мы рекомендуем установить перед веб-сервером 1С (IIS или Apache) легковесный прокси-сервер Nginx. Это стандарт де-факто в веб-разработке.

Разберем логику конфигурации nginx.conf для трансляции трафика:


server {
    listen 443 ssl;
    server_name your-domain.ru;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:80; # Перенаправляем на локальный HTTP-сервис 1С
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

В этой схеме Nginx берет на себя всю «тяжелую» работу по шифрованию. 1С продолжает работать по HTTP на внутреннем интерфейсе 127.0.0.1, что значительно упрощает отладку и настройку.

Метод 5: Автоматизация получения сертификатов через Win-ACME

Если основной причиной поиска «HTTPS без сертификата» была сложность его установки и обновления, то мы предлагаем рассмотреть инструменты автоматизации Let's Encrypt. Если ваша 1С опубликована на IIS (Internet Information Services), существует прекрасная утилита Win-ACME.

Выясним преимущества этого подхода:

Почему нельзя обойтись совсем без сертификата?

Важно понимать техническую суть вопроса: протокол HTTPS по определению требует наличия сертификата для проверки подлинности сервера и согласования ключей шифрования. Если ни одна из сторон (ни ваш сервер, ни посредник) не предъявит сертификат, браузер или система WinHTTP в 1С у клиента просто разорвет соединение с ошибкой безопасности.

Поэтому решение задачи всегда сводится к одному из двух вариантов: либо мы ставим сертификат у себя (используя автоматизацию типа Win-ACME), либо мы делегируем эту обязанность посреднику (Cloudflare, Ngrok, специализированные 1С-прокси), который «заворачивает» наш незащищенный HTTP-трафик в свою HTTPS-оболочку.

Заключение

Мы проанализировали различные подходы к публикации сервисов 1С. Если вам нужно быстрое и бесплатное решение «здесь и сейчас», лучше всего воспользоваться Cloudflare Tunnel или Ngrok. Если же вы строите надежную корпоративную инфраструктуру, оптимальным выбором будет связка Nginx + Let's Encrypt или настройка автоматического получения сертификатов на IIS. Помните, что безопасность данных ваших клиентов должна стоять на первом месте, даже если настройка HTTPS кажется сложной на первый взгляд.

← На главную