最近公司要对接一个平台,该平台使用EDI规范传送文件数据。综合考量一圈,最后选择OpenAS2,开源免费,特符合我们小公司的气质。话不多说,开工。
一、不管三七二十八,跑起来先
首先弄到一个版本代码,比如到https://sourceforge.net/projects/openas2网站下载,结构如下
上传到linux服务器,解压,到bin目录执行./start-openas2.sh,如果没有报错,服务就已经跑起来了
如果有报错,可能是你java环境问题,环境必须配置JAVA_HOME。
CLASSPATH: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
PATH: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
成功启动后会生成2个新目录:data和log,log目录用于记录日志,不管它。我们来看看data目录
data目录下有很多子目录
在toAny目录下创建一个文件,命名为OpenAS2A_OID-OpenAS2B_OID.txt,几秒钟后文件就会发给OpenAS2B
OpenAS2A_OID-OpenAS2B_OID目录下就能看到接收到的文件。具体的文件是放在inbox目录下
下面是控制台的日志
或者随便创建一个文件hellow.txt丢到toOpenAS2A目录里,几秒钟后就会发给OpenAS2A,在OpenAS2B_OID-OpenAS2A_OID目录下就
能看到接收到的文件。具体的文件是放在inbox目录下
注意看我说的,放在toAny目录下的文件名称是有要求的,名字上要体现谁发给谁,例如OpenAS2A_OID-OpenAS2B_OID.txt,放在toOpenAS2A就没有要求,为什么是这样?这就要说到OpenAS2的配置了
二、回头看配置
OpenAS2的配置文件都放在config目录下,其中2个重要的配置:config.xml和partnerships.xml
config.xml是应用程序配置,文件中的一些关键配置设置是:
• 定义要在OpenAS2应用程序中激活的模块
• 覆盖AS2代码库中的模块默认类
• 增强或改变模块的行为以及模块的输入和输出
• 定义证书和密钥存储库的位置
• 定义伙伴关系配置文件的位置
• 指定监听端口
• 启用对高可用性/负载平衡环境的支持
名为partnerships.xml的文件将配置与您要交换数据的合作伙伴相关的所有信息:
• 合作伙伴定义
• 签名、加密
• 消息压缩
• MDN等等
这里的内容就比较多了, 不展开详述。在代码包里有OpenAS2HowTo.pdf文件做了详细说明,建议参考给的示例配置来修改成自己的合作伙伴配置,重要的一点是不管是双向发送还是单向发送文件,partnerships.xml中都要做2个方向的配置。
三、整成守护进程自动启动
通过bin目录下的start-openas2.sh启动,当离开或关闭命令窗口时服务也就随之停了。所以我们还要做如下的事
1、删除多余配置
虽然不对默认配置进行任何更改,该应用程序就能作为一个守护进程启动,还是建议进行以下配置更改,以减少在此模式下冗余的模块的不必要处理,并向系统日志中填充不必要的日志记录:
- 删除 console logger – 删除元素中的元素,如下
- 删除元素中的流命令处理器,如下
2、INIT.D服务
在安装包的bin目录中提供了一个示例“openas2.d”。它提供了对使用init.d机制作为守护进程启动和停止OpenAS2应用程序的支持。使用适当的NIX操作系统的工具,将脚本安装在/etc/init.d文件夹中,并创建软链接,以便在系统启动时启动OpenAS2应用程序。
首先修改openas2.d文件以反映您安装OpenAS2的路径,然后按照下面的选项之一进行操作。
以基于Redhat的系统为根目录:
$ cp <srcDir>/bin/openas2.d /etc/init.d/
$ chkconfig --add openas2.d
$ chkconfig --level 2345 openas2.d on
在基于Debian/Ubuntu的根目录系统上:
$ cp <srcDir>/bin/openas2.d /etc/init.d/
$ chmod 750 /etc/init.d/openas2.d
$ update-rc openas2.d defaults
在基于Centos的根目录系统上:
$ cp <srcDir>/bin/openas2.d /etc/init.d/
$ chmod 750 /etc/init.d/openas2.d
$ chkconfig --add openas2.d
3、系统服务
在安装程序包的bin文件夹中提供了一个示例文件openas2.service。
首先修改openas2.d文件以反映您安装OpenAS2的路径,然后按照下面的步骤操作。
$ cp <srcDir>/bin/openas2.service /etc/systemd/system/
$ systemctl daemon-reload
$ systemctl enable openas2.service
使用以下命令测试它是否可以工作:
$ systemctl enable openas2.service
$ systemctl start openas2.service
$ systemctl stop openas2.service
四、总结
其他的就不讲了,看下OpenAS2HowTo.pdf这个文档就全明白了。应该有像我这样对英语文档超级不爽的小伙伴,所以我把它翻译成了中文,文法上可能不是很符合我们母语的表达习惯,但是相信你基于强大的中文表达能力应该能看懂。
https://github.com/OpenAS2/OpenAs2App ,源码在此
附件
链接:https://pan.baidu.com/s/1QEXGWGsmPQQaESXl0xLdnA
提取码:rpqu
附件说明:
OpenAS2Server-2.4.3.zip 代码包,里面有英文版使用说明OpenAS2HowTo.pdf
portecle-1.9.rar 密钥库生成工具,解压后双击portecle.jar就会弹出界面,OpenAS2要求密钥库必须是.p12结尾,你也可以使用OpenSSL命令,例如
openssl pkcs12 -export -in gateway.pem -inkey gateway.key -out gateway_certs.p12
OpenSSL具体说明 https://www.likecs.com/show-306390700.html
OpenAS2说明.doc 是我翻译的中文版使用说明