Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_FTP_TLS_AUTH_FAIL 1С:Предприятие и СУБД

Настройка защищенного обмена данными по SFTP и FTPS в 1С:Предприятие 8.3

Обновлено: 26.08.2026 · Официальная документация ↗

При выполнении обмена через FTP-соединение возникают следующие сбои:

  • Ошибка вызова конструктора FTPСоединение: Ошибка аутентификации при проверке сертификата узла.
  • Зависание сеанса при переходе в пассивный/активный режим передачи данных (PASV).
  • Невозможность использовать защищенный протокол SFTP встроенными средствами старых версий платформы без внешних компонент.
  • Блокировка трафика сетевыми экранами и DPI-системами из-за отсутствия явного TLS-рукопожатия (Explicit FTPS).

1. Разграничение протоколов FTPS и SFTP в платформе 1С

Платформа «1С:Предприятие 8.3» нативно поддерживает объект FTPСоединение с шифрованием FTPS (FTP over TLS/SSL). Протокол SFTP (SSH File Transfer Protocol) работает поверх SSH (порт 22) и требует использования объекта платформы SSHСоединение или внешних утилит/компонент (например, libssh2, WinSCP, Curl).

2. Программная реализация защищенного FTPS-соединения

Для подключения к защищенному FTPS-серверу с проверкой сертификата используется объект ЗащищенноеСоединениеOpenSSL:

&НаСервере
Функция ПодключитьсяКFTPS(АдресСервера, Порт, Пользователь, Пароль) Экспорт
    
    // Настройка параметров TLS
    СертификатыУдостоверяющегоЦентра = "C:\1C\SSL\ca-bundle.crt"; // путь к доверенным CA
    СертификатКлиента = ""; // путь к клиентскому сертификату при mTLS
    
    ПараметрыTLS = Новый ПараметрыЗащищенногоСоединенияOpenSSL(
        Неопределено,
        Новый СертификатыУдостоверяющегоЦентраOpenSSL(СертификатыУдостоверяющегоЦентра)
    );
    
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(ПараметрыTLS, Неопределено);
    
    Попытка
        // Установка Explicit FTPS (порт 21) или Implicit FTPS (порт 990)
        FTP = Новый FTPСоединение(
            АдресСервера,
            Порт,
            Пользователь,
            Пароль,
            , // Прокси
            Истина, // Пассивный режим (Passive Mode)
            60, // Таймаут
            ЗащищенноеСоединение // Защищенное соединение OpenSSL
        );
        
        Возврат FTP;
    Исключение
        ЗаписьЖурналаРегистрации(
            "Интеграция FTPS",
            УровеньЖурналаРегистрации.Ошибка,
            ,
            ,
            "Ошибка установки FTPS соединения: " + ОписаниеОшибки()
        );
        ВызватьИсключение;
    КонецПопытки;
    
КонецФункции

3. Реализация SFTP через SSH-клиент платформы

Если целевой сервер принимает соединения строго по SFTP (SSH), используйте выгрузку через утилиту OpenSSH/Curl с аутентификацией по открытому ключу:

&НаСервере
Процедура ОтправитьФайлSFTP(ИмяФайлаИсточника, ИмяФайлаSFTP, Хост, Пользователь, ПутьККлючу)
    
    КаталогSSH = "C:\Windows\System32\OpenSSH\sftp.exe";
    КоманднаяСтрока = СтрШаблон(
        "%1 -i "%2" -o StrictHostKeyChecking=no -b - %3@%4",
        КаталогSSH,
        ПутьККлючу,
        Пользователь,
        Хост
    );
    
    // Формирование batch-файла команд SFTP
    ФайлБатча = ПолучитьИмяВременногоФайла("txt");
    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    ТекстовыйДокумент.ДобавитьСтроку(СтрШаблон("put "%1" "%2"", ИмяФайлаИсточника, ИмяФайлаSFTP));
    ТекстовыйДокумент.ДобавитьСтроку("bye");
    ТекстовыйДокумент.Записать(ФайлБатча, КодировкаТекста.ANSI);
    
    КомандаЗапуска = СтрШаблон("%1 -i "%2" -o StrictHostKeyChecking=no -b "%3" %4@%5",
        КаталогSSH, ПутьККлючу, ФайлБатча, Пользователь, Хост);
    
    ЗапуститьПриложение(КомандаЗапуска, , Истина, КодВозврата);
    
    Если КодВозврата <> 0 Тогда
        ВызватьИсключение "Ошибка передачи данных по SFTP, код возврата: " + КодВозврата;
    КонецЕсли;
    
    УдалитьФайлы(ФайлБатча);
КонецПроцедуры

4. Траблшутинг сертификатов OpenSSL в среде Linux/Windows

Если соединение падает с ошибкой проверки цепочки сертификатов, убедитесь, что серверный бандл содержит корневой и промежуточные сертификаты УЦ. На серверах под управлением Linux проверьте пути к CA:

# Обновление доверенных CA на хосте 1С (Debian/Ubuntu)
cp corporate-ca.crt /usr/local/share/ca-certificates/
update-ca-certificates

# Проверка валидности FTPS-сертификата из консоли
openssl s_client -connect sftp.company.ru:21 -starttls ftp -showcerts
💡 Практика специалистов: При настройке защищенного соединения FTPS под Linux-сервером 1С учитывайте, что процесс rphost ищет хранилище сертификатов OpenSSL по системным путям /etc/ssl/certs. Если сертификат самоподписанный, передавайте явный путь к pem-файлу через объект ЗащищенноеСоединениеOpenSSL.

Частые вопросы (FAQ)

В чем разница между FTPS и SFTP применительно к 1С?

FTPS — это расширение классического FTP с шифрованием сессии через протокол TLS (использует порты 21 или 990 и нативно поддерживается объектом FTPСоединение). SFTP — это часть протокола SSH2 (порт 22), которая не имеет отношения к протоколу FTP и требует внешних утилит или SSH-клиента.

Почему соединение FTPS зависает при вызове команд Получить/Записать?

Это происходит из-за некорректной работы NAT в активном режиме. Для FTPS необходимо передавать флаг 'ПассивныйРежим = Истина' в конструкторе FTPСоединение, а на файрволе сервера открыть диапазон портов для пассивного режима (PASV Ports).

Как отключить проверку сертификата FTPS в 1С для самоподписанных сертификатов?

Для отключения строгой проверки передайте Неопределено в конструктор СертификатыУдостоверяющегоЦентраOpenSSL или инициализируйте пустой объект ЗащищенноеСоединениеOpenSSL(), однако для production рекомендуется всегда подключать валидный корневой сертификат CA.

Поддерживает ли 1С аутентификацию по SSH-ключам ed25519 для SFTP?

При вызове внешнего SSH-клиента поддержка зависит от версии OpenSSH в ОС (поддерживается нативно). Если используются старые внешние COM-компоненты или ActiveDirectory/Putty, ключ необходимо предварительно конвертировать в формат RSA/OpenSSH через ssh-keygen.

Полезные материалы
Рекомендуем