1С FTP обмен не работает после включения обязательного SSL (FTPS)
Протоколы передачи и ограничения платформы 1С
Проблемы с FTP-обменами в 1С часто начинаются, когда ИТ-отдел хостинга или ИБ-служба запрещает передачу данных открытым текстом (FTP, порт 21) и требует обязательного использования шифрования FTP over SSL/TLS (FTPS). Платформа 1С:Предприятие 8 поддерживает FTPS, но требует явного указания параметра защищенного соединения в коде. Ошибки также возникают из-за непройденной валидации SSL-сертификатов сервера. Бизнес-риски: остановка обмена электронными накладными (EDI), заказами с сайтом (Bitrix) или распределенными базами (РИБ через FTP).
Различия протоколов и их поддержка в 1С
| Протокол | Порт | Шифрование | Поддержка из коробки в 1С (Объект FTPСоединение) |
|---|---|---|---|
| FTP | 21 | Нет (Открытый текст) | Да, полная. |
| FTPS (Explicit/Implicit) | 21 / 990 | SSL/TLS | Да (через параметр ЗащищенноеСоединение). |
| SFTP (SSH File Transfer) | 22 | SSH | НЕТ. Требует внешних компонент (WinSCP COM, PuTTY). |
Настройка FTPS-соединения в коде 1С
Сценарий 1: Модификация кода подключения (Добавление SSL)
Если обмен самописный, необходимо изменить инициализацию объекта FTPСоединение. Добавьте объект ЗащищенноеСоединениеOpenSSL.
// Инициализация настроек SSL (без проверки сертификата - для тестов)
SSL = Новый ЗащищенноеСоединениеOpenSSL(
Неопределено,
Новый СертификатыУдостоверяющихЦентровОС()
);
// Создание защищенного FTPS соединения
Соединение = Новый FTPСоединение(
"ftp.myserver.com", // Сервер
21, // Порт (Explicit FTPS работает на 21 порту)
"User1", // Логин
"Password", // Пароль
Неопределено, // Прокси
Истина, // Пассивный режим (ОБЯЗАТЕЛЬНО для NAT)
0, // Таймаут
SSL // <--- ПАРАМЕТР ЗАЩИЩЕННОГО СОЕДИНЕНИЯ
);
Соединение.Записать(ИмяЛокальногоФайла, ИмяУдаленногоФайла);Сценарий 2: Решение проблем с валидацией сертификатов (cacert.pem)
Если сервер использует самоподписанный сертификат, 1С откажется устанавливать FTPS соединение. Необходимо добавить корневой сертификат сервера в хранилище платформы 1С.
- Экспортируйте публичный ключ корневого сертификата FTP-сервера в формате Base64 (файл
.cerили.pem). - Откройте файл
cacert.pem, который лежит в папке платформы:C:\Program Files\1cv8\<Версия>\bin\cacert.pem. - Вставьте содержимое вашего сертификата в конец этого файла. Перезапустите службу агента сервера 1С.
Типовые ошибки разработчиков
- Путаница между FTPS и SFTP: Разработчики часто пытаются использовать объект
FTPСоединениена порт 22 (SSH). Это никогда не сработает. Для SFTP в 1С необходимо использовать объектЗапускПриложения()с вызовом консольной утилиты (WinSCP) или подключать COM-объекты. - Забытый Пассивный режим: При использовании FTPS шифруется канал управления, поэтому роутеры (NAT) не могут прочитать команды PORT и пробросить порты для канала данных (Active mode). Всегда используйте Пассивный режим (Параметр =
Истина).
Настройка сертификатов и протоколов обмена в типовых конфигурациях (УТ, ERP, КА) имеет свои скрытые нюансы в подсистеме БСП. Эксперты ITSTM быстро адаптируют ваши узлы обмена под новые требования ИБ (SSL/TLS, WebDAV) без потери истории синхронизации.
Частые вопросы (FAQ)
Как настроить FTPS в типовом обмене (через справочник 'Узлы обмена')?
В современных версиях Библиотеки Стандартных Подсистем (БСП) в настройках узла обмена (настройка транспорта) появилась галочка 'Использовать защищенное соединение (FTPS)'. Достаточно установить её, не меняя код.
Что такое Explicit и Implicit FTPS?
Implicit (Неявный) — устаревший метод, соединение сразу устанавливается по зашифрованному порту 990. Explicit (Явный) — соединение устанавливается по стандартному порту 21, после чего 1С отправляет команду AUTH TLS для включения шифрования. 1С поддерживает Explicit FTPS.
Почему 1С ругается на сертификат, хотя в браузере он доверенный?
Потому что сервер 1С (rphost) использует не системное хранилище сертификатов Windows, а свой собственный файл cacert.pem. Если сертификат выдан локальным УЦ, его нужно вручную добавить в cacert.pem платформы.
Можно ли отключить проверку сертификата в коде?
Да, но это снизит безопасность (риск MITM атак). Можно передать Неопределено во второй параметр ЗащищенноеСоединениеOpenSSL, но лучше использовать 'Новый СертификатыУдостоверяющихЦентровОС()', чтобы 1С брала корневые сертификаты из ОС (доступно в новых версиях платформы).