Linux部署OpenAS2

了解AS2协议和OpenAS2

AS2协议 设计的目的在于通过Internet安全可靠地传输商业文档。这个协议首先通过证书(Certification)进行数据加密和数字签名生成数据包,然后通过HTTP (或HTTPS)协议传输。
OpenAS2 是用Java实现AS2的开源项目, 基于FreeBSD开源协议,OpenAS2使您能够在交易伙伴之间传送和接收 EDI-X12、EDIFACT、XML 或二进制形式的AS2 消息。

准备

JDK1.8
OpenAS2Server-2.4.3
伙伴A的证书 partner.cer

安装JDK

参考 https://www.cnblogs.com/xuliangxing/p/7066913.html

安装OpenAS2

解压OpenAS2Server-2.4.3.zip至/usr/OpenAS2Server-2.4.3

生成证书

cd /usr/OpenAS2Server-2.4.3/bin

生成本机的cer证书和p12文件。

./gen_p12_key_par.sh mine mine SHA512 "CN=mine, OU=mine_test, O= mine_test, L=Shanghai, S=Shanghai, C=CN, EMAILADDRESS=zhangsan@163.com"

设置密码123456,会生产两个文件,mine.cer 本机的证书,mine.p12文件。
用aaa.p12文件导出密钥mine.key

openssl pkcs12 -in mine.p12 -nocerts -nodes -out mine.key

将自己的证书和伙伴A的证书合并,双方互通证书才能通信

cat mine.cer partner.cer > test.cer

将自己的证书和伙伴A的证书合并生成新的p12文件 test.p12,密码设置为123456。注意设置别名

openssl pkcs12 -export -out test.p12  -in mine.cer -name "mine" -certfile partner.cer -caname "partner" -inkey mine.key

将生成的p12文件拷贝到config目录下

cp test.p12 /usr/OpenAS2Server-2.4.3/config/test.p12

配置config.xml

 cd /usr/OpenAS2Server-2.4.3/config

配置证书

<certificates classname="org.openas2.cert.PKCS12CertificateFactory"
	filename="%home%/test.p12"
	password="123456"
	interval="300"/>

配置伙伴目录
多个伙伴可配置多个目录。这里的My_OID 和 PartnerA_OID 要跟partnerships.xml 里的配置要一致。

<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
	outboxdir="%home%/../data/toPartnerA/"
	errordir="%home%/../data/toPartnerA/error"
	interval="5"
	defaults="sender.as2_id=My_OID, receiver.as2_id=PartnerA_OID"
	sendfilename="true"
	mimetype="application/EDI-X12"/>

配置HTTPS
如果是https协议传输,须在接收方配置。
将SSL证书(例ssl_cer.pfx)转换为jks格式(例ssl_cer.jks),密码设置为testas2

keytool -importkeystore -srckeystore ssl_cer.pfx -destkeystore ssl_cer.jks -srcstoretype pkcs12

输入pfx文件的密码,再设置jks文件的密码为testas2,配置如下:

<module classname="org.openas2.processor.receiver.AS2ReceiverModule"
	port="10080"
	protocol="https"
	ssl_protocol="TLS"
	ssl_keystore="%home%/ssl_certs.jks"
	ssl_keystore_password="testas2"
	errordir="%home%/../data/inbox/error"
	errorformat="sender.as2_id, receiver.as2_id, headers.message-id"/>

配置mdn目录及文件接收目录
mdn目录:消息处理通知文件
inbox目录:接收的文件,如果只保留源文件名,可将 -$mdn.msg.headers.message-id$去掉
msgheaders目录:通信Headers信息文件

<module classname="org.openas2.processor.storage.MDNFileModule"
		filename="%home%/../data/$mdn.msg.sender.as2_id$-$mdn.msg.receiver.as2_id$/mdn/$date.yyyy-MM-dd$/$mdn.msg.content-disposition.filename$-$mdn.msg.headers.message-id$"
		protocol="as2"
		tempdir="%home%/../data/temp"/>
<module classname="org.openas2.processor.storage.MessageFileModule"
		filename="%home%/../data/$msg.sender.as2_id$-$msg.receiver.as2_id$/inbox/$msg.content-disposition.filename$-$msg.headers.message-id$"
		header="%home%/../data/$msg.sender.as2_id$-$msg.receiver.as2_id$/msgheaders/$date.yyyy-MM-dd$/$msg.content-disposition.filename$-$msg.headers.message-id$"
		protocol="as2"
		tempdir="%home%/../data/temp"/>

配置partnerships.xml

Partner标签:
name 与下面partnership中的sender/receiver一致
as2_id 与config.xml配置的as2_id一致。并且要与伙伴服务器的as_id配置一致
x509_alias 与p12文件中保存的证书别名(alias)一致
email config.xml中logger日志文件配置时用到
partnership标签:
sender/receiver 与Partner标签的name一致
as2_url 伙伴A的接收地址和端口号
as2_receipt_option 伙伴A的异步接收地址和端口号
<partnerships>

	<partner name="My"
		as2_id="My_OID"
		x509_alias="mine"
		email="xxx@xxx.com"/>	
		
	<partner name="PartnerA"
		as2_id="PartnerA_OID"
		x509_alias="partner"
		email="xxx@xxx.com"/>
		
	<partnership name="my-to-partnerA">
		<sender name="My"/>
		<receiver name="PartnerA"/>
		<attribute name="protocol" value="as2"/>
		<attribute name="content_transfer_encoding" value="binary"/>
		<attribute name="subject" value="From My to PartnerA"/>
		<attribute name="as2_url" value="http://xx.xx.xx.xx:10080"/>
		<attribute name="as2_mdn_to" value="edi@openas2b.org"/>
		<attribute name="as2_mdn_to" value="http://xx.xx.xx.xx:10081"/>
		<attribute name="as2_mdn_options" value="signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, SHA1"/>
		<attribute name="encrypt" value="3DES"/>
		<attribute name="sign" value="SHA1"/>
		<attribute name="resend_max_retries" value="3"/>
	</partnership>
	
	<partnership name="partnerA-to-my">
		<sender name="PartnerA"/>
		<receiver name="My"/>
	</partnership>

</partnerships>

启动服务

cd /usr/OpenAS2Server-2.4.3/bin

执行start-openas2.sh,开启服务。在/usr/OpenAS2Server-2.4.3/data目录下会生成toPartnerA文件夹(config.xml配置的),程序会自动扫描该文件夹下的文件,如扫描到,会发送给伙伴A。伙伴A的服务也需要开启,如果提示” Message sent and MDN received successfully”,则发送成功。

参考 http://openas2.sourceforge.net/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值