EDI сообщество демонстрирует постоянно растущий интерес к AS2. Чем же в действительности является AS2? Перед Вами вторая статья из серии, посвященной изучению AS2 и значению AS2 применительно к EDI рынку.
Если требуется полная историческая и техническая информация, то предлагаю обратиться к Google c запросом: “AS2”. Данная серия посвящена практическим аспектам использования и не будет докучать избыточной детализацией. (См. AS2: Часть 1 – Что это?)
Больше всего в AS2 меня удивляет количество возможных путей внедрения. Даже когда я думаю, что видел уже все варианты, то тут же появляется кто-то и предлагает новый путь. Чего не встретишь повсеместно, то общепризнанного набора лучших практик для AS2. Поэтому предлагаю ознакомиться с моими.
TCP порты
Стараясь не вдаваться в глубокую техническую дискуссию о назначении tcp-портов, я чувствую необходимость обсудить это в контексте AS2.
Большинство стандартов интернет-соединений имеют соглашение о назначении общих портов. Таких как 80 для http, 443 для http через ssl, 20 и 21 для ftp, 25 для smtp, 110 для pop3 и так далее. Даже такие незаметные штуки о которых вы никогда и не слышали имеют общие номера портов (например, порт 17 для сервиса «Цитата дня», QOTD)
В общем случае, когда стандарт написан, он содержит в себе запрос на назначение порта. Авторы AS2 не требовали этого, фактически они даже нигде в тексте стандарта не упоминают назначение TCP-портов . Я подозреваю, что они чувствовали, что порты 80 и 443 будут предполагаться по умолчанию, поскольку AS2 это http ewb-процесс. К сожалению, это не так.
В реалиях мы видим, что каждый хаб назначает сервису любой порт по своему желанию, создавая ненужный беспорядок и превращая файрвол своих торговых партнеров в швейцарский сыр. Вот список некоторых из них, которые нам встречались: 80, 443, 2080, 4080, 4090, 4079, 5080, 6080, 6260, 8080, 8050, 9080, 9480, 32002, 49201, 57080
К настоящему времени наиболее общими выглядят 4080 и 5080. Я всячески призываю каждого, кто будет устанавливать AS2, придерживаться портов 80 и 443. Это позволит Вашим партнерам избежать головной боли с правильной настройкой файрволов. Если Вы вынуждены использовать порты, отличные от 80 и 443, то используйте 4080 и 5080 как наиболее общеупотребительные. Администраторы файрволов каждого уголка мира будут Вам благодарны.
Файрволы
Пожалуйста, постарайтесь сделать поведение Вашего AS2 сервера похожим на остальные web-серверы и не тратьте понапрасну время, мэппируя каждого торгового партнера через свой файрвол. Он может быть таким же пуленепробиваемым, как и любой другой web-сервер, и, если вы следовали рекомендации использовать порт 80, то менеджменту будет легче продавать продукт. Кроме того, только сообщения с AS2 ID и сертификатами, которыми вы обменялись, могут доставлять данные. Необходимость регистрировать IP адрес каждого торгового партнера – это объемная работа для Вас, а также вызывает недоумение у партнеров, когда они обновляют системы.
Если Вы настаиваете на мэппировании каждого AS2 торгового партнера через Ваш файрвол и партнер присылает Вам для использования блок IP адресов для использования (например, x.x.x.224/27 или x.x.x.224 255.255.255.224), постарайтесь распознать его как блок и зарегистрируйте как блок. Не добавляйте один адрес x.x.x.224 в Ваш файрвол. Если вы не так просты и используете файрвол, то будьте и достаточно умны, чтобы распознать блок IP, когда его Вам присылают.
HTTPS
Сила и красота AS2 кроется в его способности подписывать и шифровать данные, используя известные сертификаты. Зачем делать дополнительную работу, снова шифруя всю сессию посредством SSL ? В этом нет необходимости, т.к. требует дополнительной мощности для обработки, а также еще один сертификат для обслуживания. Наша цель – меньше работы, а не больше, не правда ли?
Если Вам абсолютно необходимо использовать HTTPS позвольте выдвинуть ряд требований:
- Не используйте сертификаты для HTTPS. Это только добавит Вашим партнерам головной боли, вызванной необходимостью обслуживать в своих системах дополнительный сертификат, чтобы безошибочно идентифицировать Ваш сервер. Использование Вашим сервером сертификата, подписанного известным удостоверяющим центром, доставит меньше проблем Вашим торговым партнерам..
- Я не должен был упоминать этого, но нередко приходится сталкиваться с проблемой: убедитесь, что публичное (common) имя Вашего сертификата совпадает с URL Вашего web-сервера!
AS2 IDs и EDI IDs
AS2 ID является аналогом телефонного номера для Вашей AS2 системы. Если вы имеете более одной системы (например, Контроль и Производство), то не присваивайте им одинаковый AS2 ID. Если у Вас более одного подразделения, использующего AS2, не назначайте им одинаковый AS2 ID. Используй те одинаковый AS2 ID на разных серверах только если серверы служат для равномерного распределения нагрузки или резервирования, в остальных случаях каждый AS2 сервер получает собственный AS2 ID.
-
Назначайте уникальные AS2 ID для каждого сервера
Не назначайте одинаковые EDI -идентификаторы (GLNs, и т.д.) различным AS2 серверам. Если Вы запустили свой AS2 сервер, то, вероятнее всего, Вы имеете и собственную VAN. Если у Вас работает несколько AS2 серверов с различными AS2 ID, значит у Вас работает несколько VAN. Вам известно, какое это разочарование: одинаковые EDI ID для различных VAN.
-
Назначайте каждый EDI ID в соответствие исключительно одному AS2 ID
Тестовые системы и тестирование
Установка AS2 соединений это процесс. Прежде всего необходимо обменяться параметрами и сертификатами. Затем, если необходимо, сконфигурировать файрволы. После этого начинаем пробовать передавать и получать файлы.
- Создайте веб-страницу, на которой укажите всю свою информацию, включая URL, AS2 ID и загружаемый сертификат (сертификаты). Разместите данные контактного лица и e-mail на этой странице. Вставляйте эти данные во все сообщения, адресованные Вашим торговым партнерам. Размещайте все изменения Ваших данных на этой странице (например, . контакты, сертификаты и т.д.) и поместите ссылку на сервис, подобный http://www.changedetection.com/forwebsites.html. Таким образом Ваши торговые партнеры будут уведомлены об изменениях автоматически.
- Сделайте Вашу страницу привлекательной и удобной, если ПО позволяет это реализовать, для пользователей, которые попытаются использовать AS2 URL через веб-браузер. Это позволит им проверить IP и файрвол до того как начать отправлять сообщения.
- Разрешите Вашей системе принимать текстовые документы; не запрещайте mime-сообщения. Человек на другом конце может иметь доступ только к средствам коммуникации, а не к EDI данным. Даже, если есть доступ к EDI данным, то не всегда есть возможность сгенерировать тестовый документ Помните, AS2 – это коммуникационный протокол, во время проверки, до включения в EDI-систему, мы прежде всего должны убедиться, что каждый документ может быть отправлен и получен.
- Не используйте одинаковый AS2 ID для тестовой и рабочих систем.
- Не используйте одинаковый GLN или другие Ваши EDI ID в обоих системах. Определите тестовый Test ID (ZZ*MYCOMPANYTEST) и рабочий Production ID (ZZ*MYCOMPANYPROD). Вы представить себе не можете, насколько сложной может быть маршрутизация данных в двух различных системах, использующих одинаковые EDI ID. Это как дать кому-либо один номер телефона для разных мест и ожидать, что волшебным образом, зазвонит нужный аппарат.
- Убедитесь, что две системы работают одинаково. Полным разочарованием является работающие по разному тестовые и рабочие AS2 системы.
Типичная конфигурация
Используйте подписи и шифрование для всех коммуникаций, передаваемых данных и MDN (Message Disposition Notification) сообщений. Именно поэтому мы используем AS2 и именно так сконфигурированы 100% AS2 систем, которые я видел. Представляется, что это лучшая практика для каждого.
AS2 имеет опцию компрессии, я никогда не сталкивался с запросами на ее использование. Если Вы не посылаете огромные сжимаемые файлы, применение функции сжатия, вероятно, потребует больше вычислительных ресурсов и не даст ощутимого улучшения в скорости..
Синхронные или асинхронные MDNs. Как мне кажется, MDN настолько малы, что могут обрабатываться синхронно. Технически, отправляющая система запрашивает синхронную или асинхронную передачу, но Ваш торговый партнер может запросить использование того или иного способа. В действительности это не имеет значения, в любом случае. Однако, если Вы увидите, что синхронные MDN «затормаживают» Вашу систему, возможно Вам потребуется перечитать следующий раздел, посвященный встроенной обработке.
Встроенная обработка
AS2 это транспортный протокол, не синтаксический анализатор. Я видел слишком много систем, которые вставляли анализ данных в AS2 систему. Если это валидная AS2 передача с действующим сертификатом от ожидаемого торгового партнера, пожалуйста, отправляете положительный MDN.
-
Не пытайтесь проверять X12 или EDIFACT данные в AS2 системе. Не отправляйте негативный MDN, по причине некорректностей в EDI-данных. Для этого существуют EDI протоколы. Пожалуйста, используйте их.
- Не ограничивайте данные только MIME-TYPE, большинство людей не знают что это такое, не говоря о том как сконфигурировать свою AS2 систему, чтобы посылать MIME-TYPE сообщения.
- Если же Вы обязаны совместить передачу и анализ данных, то передавайте значимые, корректные MDN. В 99% случаев результатом являются пустые, незаполненные, неподписанные MDN, которые неинформативны. Если Ваша система отвергает данные из-за их содержания, то отразите это в информативном MDN (например, Вы оправляете mime-type text/plain, application/edi-x12 expected).
Этот механизм состоит из множества движущихся частей. Когда все работает правильно, это не проблема. Однако, если что-то пошло не так, то огромную пользу принесет декомпозиция проблемы. Когда коммуникационный канал забит форматами данных, диагностика становится очень сложным процессом.
Сертификаты
Сертификаты… Следующая статья в серии будет посвящена сертификатам, поэтому здесь рассмотрим только наиболее общие лучшие практики.
- Присвойте файлу, содержащему Ваш сертификат, значимое имя: Company.as2id.StartDate.ExpireDate.cer (lorendata.ecgrid.20120830.20140829.cer).
- Подтвердите действенность сертификата минимум на 2 года. Необходимость перенастраивать и тестировать систему только из-за того, что выясняется, что на следующей неделе нужно будет установить новый сертификат, реально выносит мозг. На данном этапе развития этого не избежать, но чем дольше Ваш сертификат действует, тем реже с проблемой придется сталкиваться.
- Не существует заданной максимальной продолжительности жизни сертификата. Я встречал немало партнеров, устанавливающих срок не более 5 лет, но и не менее. Вероятно это является безопасным максимумом.
- Смена сертификатов — это болезненная процедура. Тема будет раскрыта более глубоко в следующей статье. Сейчас же я призываю Вас не назначать замену на выходные, праздничные дни или время после рабочего дня. Если Вы сделаете иначе, то каждый из Ваших партнеров должен будет оплатить дополнительные рабочие часы своим сотрудникам, участвующим вместе с Вами в смене сертификатов. Лучшие дни: вторник, среда, четверг. Выбирайте наименее загруженное время для большинства Ваших клиентов. Также, оповестите их заранее (предоставьте 60 дней), чтобы партнеры смогли запланировать мероприятие. Многим из них придется найти и прочитать инструкции как это делать или пригласить специалиста со стороны. Помогая клиентам, Вы помогаете себе. Заботьтесь о времени каждого человека.
- Вставляете копию своего открытого ключа в каждом сообщении, которое Вы отправляете своим партнерам в процессе установки или изменений. Не вынуждайте их искать ключ в предыдущих письмах или присылать Вам запросы с просьбой отправить ключ повторно.
- Прикрепляйте ключ к письму различными способами. Многие почтовые программы с трудом обрабатывают письма со вложенными ключами. Переименуйте ключ в .txt, архивируете и прикрепите в виде архива. Также можно выложить ключ на сайт и выслать партнерам URL, откуда они смогут его загрузить.
Провайдеры и VAN
Многие из Ваших партнеров будут пользоваться услугами провайдеров и VAN. Их системы, в основном, будут предлагать AS2 соединения с Вашей системой.
Если это возможно, то установите одно соединение с сервис-провайдером и разрешите всем клиентам провайдера (Вашим партнерам) использовать это соединение.
Вы ничего не приобретаете, определив для каждого партнера свой собственный AS2 ID и сертификат – они все генерируются в одной системе. Только представьте, сколько времени провайдер сохранит Вам, избавив от необходимости управлять этими отдельными соединениями.
Разное
Еще несколько советов, которые не относятся напрямую к настройке AS2, но помогут в процессе:
- Заведите твиттер аккаунт для Ваших EDI партнеров. Теперь Вы управляете своей собственной сетью и должны быть активны, уведомляя партнеров о перебоях в работе (запланированных или неожиданных). Когда Ваша система выходит из строя, множество других людей должны знать что происходит.
- Отвечайте своевременно на на все вопросы и запросы. Даже если это будет простой ответ, что Вы заняты и сможете ответить в другое (определите) время. Тишина – это пугающий момент для небольшого поставщика, у которого возникли проблемы с подключением.
- Выбирая самостоятельное создание и управление соединениями, а не отдавая их на аутсорсинг сервис-провайдеру или VAN, Вы должны иметь великолепную службу поддержки клиентов для своих партнеров. Да, у вас за плечами огромный опыт работы с AS2, но компьютеры – это компьютеры, и мы все зависим от ПО сторонних разработчиков. Если что-то не работает – это может быть Ваша система. Даже если проблема еще ни с кем не возникла, она может быть в Вашей системе. Цель здесь не доказать, что Вы правы, цель – иметь работающую систему.
- Подумайте о том, что Вам нравится и не нравится в Вашей VAN. Не будьте той частью, которая Вам не нравится.
Моя главная цель — не сделать процесс более сложным, чем он должен быть. В большинстве случаев, простейшая конфигурация является наилучшей. Однако, если Вы внедряете более сложную систему (например, тестовый и рабочий серверы), убедитесь, что «простота» применима ко всей системе, а не каждому сервису в отдельности. Вы избавите своих партнеров от головной боли на долгое время, если не будете усложнять систему.
В следующей статье Вы узнаете о сертификатах даже больше, чем хотели бы узнать…
Тодд Гулд (Todd Gould, President Loren Data Corp)