OpenAS2 使您能够在交易伙伴之间传送和接收 EDI-X12、EDIFACT、XML 或二进制形式的 AS2 消息。由于 OpenAS2 文档不够具体,因此本文向您演示如何安装、配置和使用 OpenAS2,以及创建一个稍微修改就可用于不同场景的引用模型。本文还演示如何使用该 OpenAS2 引用模型来测试 B2B 网关,即将其用作向 IBM® WebSphere® DataPower® B2B Appliance XB60(以下简称 XB60)发送消息的客户端。
为了能够运行本文中的场景,您需要安装 Java™ —— 本文使用 Java 1.6。您还需要 OpenAS2 包和 Java Cryptography Extension (JCE) 策略文件,可从本文的末尾下载 它们。
图 1. OpenAS2 安装文件夹结构
- 将下载的 OpenAS2 包解压缩到适当的位置,即
<install_dir>
。在 Linux® 中<install_dir>
的值通常为/opt/OpenAS2
,在 Microsoft® Windows® 中为C:\OpenAS2
。 - 将文件
<install_dir>/lib/openAS2_<date>.jar
重命名为<install_dir>/lib/openas2-lib.jar
(大小写敏感)。上面的图 1 显示了重命名之后解压缩的包,并突出显示了该文件。您的安装应该与此相似。 - 要让加密和证书管理正常工作,必须在 Java 中安装正确的 JCE 策略文件。下载的压缩文件包含
local_policy.jar
和US_export_policy.jar
两个文件。将它们安装到<JAVA_HOME>/lib/security
下的 Java 位置中。在安装这些新文件之前要备份现有的文件。 - 为了安全起见,解压缩本文附带的可下载附加材料,并从系统平台(Windows 或 Linux)上将
myCompany
文件夹复制到<install_dir>
。然后在 Linux 上运行standalone.sh
或在 Windows 上运行standalone.cmd
启动 OpenAS2。输入exit
终止该软件的运行。您应该看到类似于下面的图 2 的输出。如果遇到任何 Java 异常,则可能需要将 Java 添加到环境变量的路径中。如果异常与 SSL 证实相关,则可能是未能正确地安装 JCE 策略。
图 2. 运行 OpenAS2 的样例
Staring OpenAS2 with file myCompany.xml OpenAS2 v0.9 Starting Server... Loading configuration... Registering Session to Command Processor... Starting Active Modules... OpenAS2 Started 07/14/10 12:03:57 OpenAS2Server: - OpenAS2 Started - Loading Command Processor...[Thread[Thread-2,5,main], Thread[Thread-3,5,main]] Loading Command Processor...[Thread[Thread-2,5,main], Thread[Thread-3,5,main]] #>exit |
在本文中将用到下面的引用模型。端口值是任意的,但是两端的设置必须一致才能交换消息。这个场景涉及到两个交易伙伴 myCompany
和myPartner
,它们使用 OpenAS2 交换消息。这些交易伙伴在 OpenAS2 中定义;它们不是 系统的主机名。实际上这些交易伙伴可以驻留在同一个物理硬件上。下面的图 3 显示了该模型。通过 10080 端口上将一条 AS2 消息从myPartner
发送到myCompany
,以同步的方式或通过 20081 端口异步接收 MDN。相反地,当通过 20080 端口将 AS2 消息从myCompany
发送到myPartner
时,以同步的方式或通过 10081 端口异步接收 MDN。
图 3. 这里使用的 OpenAS2 引用模型
创建引用模型需要两个交易伙伴 myCompany
和 myPartner
,如上面的图 3 所示。它们可以运行在 Windows 系统、Linux 系统或同时运行在这两种系统上,甚至可以运行在同一台主机上。一定要使用正确的文件分隔符 —— 在 Windows 中为 “\”,在 Linux 系统中为 “/”。如上面的图 3 所示,通过 4 个文件来控制交易伙伴的行为:
- 用于储存将在交易伙伴之间传递的 SSL 证书的密匙库。
- 控制交易伙伴(上面的图 3 中的
myCompany.xml
和myPartner.xml
)的行为的配置文件。它包含交易伙伴的属性和将与之进行通信的交易伙伴的值。 - 定义交易伙伴之间的关系的 partnerships 文件。默认情况下,这个文件的名称为
partnerships.xml
- 一个名为
commands.xml
的命令文件,它是 OpenAS2 发行版的一部分,不需要进行修改。
这些文件包含在针对 Windows 或 Linux 的下载资料中。它们配合 Unix shell 脚本和 DOS 命令文件来运行该软件。
第 3 部分 使用预配置交易伙伴传递文档(Windows 例子)
可以通过压缩文件中附带的文件在 Windows 或 Linux 上开始传递文档。在 Windows 系统上,在 OpenAS2 <install_dir>
中从解压缩文件中复制文件夹Windows\myCompany
和Windows\myPartner
(不是显示的所有 OpenAS2 文件夹),如图 4 所示。在这里,Windows 和 Linux 的惟一区别是使用standalone.sh
shell 脚本代替standalone.cmd
,以及从解压缩包的 Linux 子目录中复制myCompany
和 myPartner
文件夹。在 Windows 和 Linux 系统上,myCompany.xml
和myPartner.xml
文件的惟一区别是将文件分隔符从后斜杠改为前斜杠。
图 4. myCompany 和 myPartner 的 OpenAS2 配置
C:\OpenAS2 (<install_dir>) +--lib | ... +--myCompany | commands.xml | myCompany.p12 | myCompany.xml | partnerships.xml | standalone.cmd | +--myPartner | commands.xml | myPartner.p12 | myPartner.xml | partnerships.xml | standalone.cmd |
您已经准备好传递文档!在 myCompany 文件夹中双击 standalone.cmd 文件。如果您安装了 JCE 组件,将会看到 OpenAS2 的运行,如下面的图 5 所示。该文件在此文件夹中分别创建了名为resend
、To_any
、To_myCompany
和To_myParter
的子文件夹,以及一个日志文件:
图 5. 运行中的 OpenAS2
在 myPartner 文件夹中双击 standalone.cmd 文件。您将看到刚才创建文件夹和日志文件和类似于上图的窗口。要将文档从 myPartner 发送到 myCompany,仅需将文件放入<install_dir>/myPartner/To_myCompany
文件夹。下图显示了文件交换过程(突出显示消息)。将文件发送到哪里?它将出现在<install_dir>\myCompany
目录下的inbox
文件夹中。
图 6. 将文档从 myPartner 发送到 myCompany
图 7. myCompany 向 myPartner 发送回复
为了保持简洁,下面的图 8 显示了文本格式的输出结果,将两个输出结果合并起来便于了解该过程,并突出显示重要的部分:
- 在第一个代码块中,myPartner 轮询 to_MyCompany 文件夹,选取消息并对其进行加密和签名,然后使用 HTTP 通过端口 10080 将它发送到 myCompany。
- 在第二个代码块中,myCompany 接收消息并对其进行解密和验证,然后将它和标题一起储存在 myCompany 文件夹中。然后它同步发送 MDN,这可以通过中间代码块第一行和最后一行显示的 IP 地址 (127.0.0.1) 和端口 (3216) 看出来,因为它们是一样的。
- 在第三个代码块中,myPartner 接收 MDN 并验证它,并记录消息已发送并收到这一事实,然后将它从 to_myCompany 文件夹删除。
图 8. 将文件从 myPartner 发送到 myCompany
myPartner: 07/28/10 10:19:19 DirectoryPollingModule: processing C:\OpenAS2\myPartner\To_myCompany\inbound.EDIFACT myPartner: 07/28/10 10:19:19 DirectoryPollingModule: file assigned to message C:\OpenAS2\myPartner\To_myCompany\inbound.EDIFACT [<OPENAS2-28072010101919+0100-7908@myPartner_myCompany>] myPartner: 07/28/10 10:19:19 AS2SenderModule: message submitted [<OPENAS2-28072010101919+0100-7908@myPartner_myCompany>] myPartner: 07/28/10 10:19:19 AS2SenderModule: signed data [<OPENAS |