OpenAS2简易使用
OpenAS2 使用手册
目录
概述
OpenAS2是一个开源的AS2(Applicability Statement 2)服务器实现,用于在企业间进行安全的EDI(电子数据交换)文档传输。AS2协议基于HTTP/HTTPS,提供数据加密、数字签名和消息确认功能。
可以去sourceforge下载server版本,目前最新的是4.5.2版本,本文基于3.11.0版本测试。
主要特性
- 支持HTTP/HTTPS传输
- 数据加密和数字签名
- MDN(Message Disposition Notification)回执确认
- 目录轮询自动发送
- 灵活的合作伙伴配置
- 详细的日志记录和监控
系统要求
硬件要求
- CPU: 双核2GHz以上
- 内存: 最小2GB,推荐4GB以上
- 磁盘空间: 最小1GB可用空间
软件要求
- Java Runtime Environment (JRE) 11或更高版本
- Windows/Linux/Unix操作系统
- 网络连接(用于与合作伙伴通信)
安装配置
1. 基础安装
-
解压安装包
解压OpenAS2Server-3.11.0.zip到目标目录 例如: f:\OpenAS2Server-3.11.0 -
目录结构说明
OpenAS2Server-3.11.0/ ├── bin/ # 可执行文件和脚本 ├── config/ # 配置文件 ├── data/ # 数据目录(收发文件) ├── lib/ # 依赖库文件 ├── logs/ # 日志文件 └── resources/ # 资源文件
2. 启动服务
Windows系统:
cd bin
start-openas2.bat
Linux/Unix系统:
cd bin
./start-openas2.sh
3. 验证安装
- 检查日志文件
logs/log-YYYYMMDD.txt - 确认服务正常启动,无错误信息
- 默认HTTP端口: 10080
- 默认HTTPS端口: 10443
配置文件详解
1. config.xml - 主配置文件
主要配置项说明:
证书配置
<certificates>
<certificate classname="org.openas2.cert.PKCS12CertificateFactory"
filename="%home%/rithuma2.p12"
password="test"
interval="300000"/>
</certificates>
HTTP/HTTPS接收器
<module classname="org.openas2.processor.receiver.AS2ReceiverModule"
port="10080"
errordir="%home%/data/inbox/error"
errorformat="sender.as2_id, header.message-id, $date.yyyy-MM-dd-HH-mm-ss$"/>
目录轮询模块
<module classname="org.openas2.processor.sender.AS2DirectoryPollingModule"
outboxdir="%home%/data/to25001809US"
errordir="%home%/data/to25001809US/error"
sentdir="%home%/data/rithuma2-25001809US/sent"
interval="5000">
<defaults>
<attribute name="sender.as2_id" value="rithuma2"/>
<attribute name="receiver.as2_id" value="25001809US"/>
</defaults>
</module>
2. partnerships.xml - 合作伙伴配置
合作伙伴定义
<partner name="25001809US"
as2_id="25001809US"
x509_alias="25001809US"
email="partner@example.com"/>
合作关系配置
<partnership name="rithuma2-to-25001809US">
<sender name="rithuma2"/>
<receiver name="25001809US"/>
<attribute name="protocol.as2" value=""/>
<attribute name="content_transfer_encoding" value="binary"/>
<attribute name="subject" value="AS2 Message from rithuma2 to 25001809US"/>
<attribute name="as2_url" value="https://partner.example.com:10443/as2"/>
<attribute name="as2_mdn_to" value="https://your-server.com:10443/as2"/>
<attribute name="encrypt" value="3des"/>
<attribute name="sign" value="sha1"/>
<attribute name="as2_mdn_options" value="signed-receipt-protocol=optional,pkcs7-signature; signed-receipt-micalg=optional,sha1"/>
</partnership>
3. messages.xml - 消息格式配置
定义消息的格式和存储规则:
<messages>
<format classname="org.openas2.message.AS2Message"
messageid="$rand.1234567890abcdefghijklmnopqrstuvwxyz$-$date.ddMMyyyyHHmmssZ$@$msg.sender.as2_id$_$msg.receiver.as2_id$"/>
</messages>
合作伙伴管理
1. 添加新合作伙伴
步骤1: 在partnerships.xml中添加合作伙伴
<partner name="NewPartner"
as2_id="NewPartner"
x509_alias="NewPartner"
email="newpartner@example.com"/>
步骤2: 配置合作关系
<partnership name="rithuma2-to-NewPartner">
<sender name="rithuma2"/>
<receiver name="NewPartner"/>
<!-- 其他配置属性 -->
</partnership>
步骤3: 创建目录结构
data/
├── outbox/NewPartner/ # 发送文件目录
├── rithuma2-NewPartner/
│ ├── sent/ # 已发送文件存档
│ └── mdn/ # MDN回执存储
└── inbox/NewPartner/ # 接收文件目录
2. 配置证书
导入合作伙伴公钥证书:
cd bin
./import_public_cert.sh NewPartner /path/to/partner_public.cer
生成自己的密钥对:
cd bin
./gen_p12_key_par.sh rithuma2 yourpassword
文件传输
1. 发送文件
方法1: 使用outbox目录(推荐)
- 将要发送的文件放入
data/outbox/PartnerName/目录 - 系统会自动检测并发送文件
- 发送成功后,文件会移动到相应的sent目录
方法2: 使用专用轮询目录
- 将文件放入配置的轮询目录(如
data/to25071809US/) - 系统按配置的间隔检测并发送
- 成功后文件移动到sent目录,失败则移动到error目录
2. 接收文件
- 自动接收: 合作伙伴发送的文件会自动保存到
data/inbox/PartnerName/目录 - MDN确认: 系统会自动发送MDN回执确认收到文件
- 错误处理: 接收失败的文件会保存到
data/inbox/error/目录
3. 文件处理流程
发送流程:
文件放入outbox → 系统检测 → 加密签名 → HTTP/HTTPS传输 → 接收MDN → 移动到sent目录
接收流程:
接收HTTP请求 → 验证签名 → 解密文件 → 保存到inbox → 发送MDN确认
证书管理
1. 证书类型
- 私钥证书: 用于签名和解密(.p12格式)
- 公钥证书: 用于验证和加密(.cer格式)
- SSL证书: 用于HTTPS通信(.jks格式)
2. 证书操作
查看证书信息
keytool -list -keystore config/as2_certs.p12 -storetype PKCS12
导入合作伙伴证书
cd bin
./import_public_cert.sh PartnerAlias /path/to/partner.cer
导出公钥证书
keytool -export -alias rithuma2 -keystore config/as2_certs.p12 -storetype PKCS12 -file rithuma2_public.cer
3. 证书配置检查
确保partnerships.xml中的x509_alias与证书库中的别名一致:
<partner name="25001809US" x509_alias="25001809US"/>
监控和日志
1. 日志文件
- 主日志:
logs/log-YYYYMMDD.txt - 错误日志: 包含在主日志中,级别为ERROR
- 调试日志: 可通过配置启用详细调试信息
2. 关键日志信息
成功发送
INFO [AS2SenderModule] Message sent successfully to 25001809US
INFO [MDNSenderModule] MDN received from 25001809US
发送失败
ERROR [AS2SenderModule] Failed to send message to 25001809US: Connection timeout
ERROR [AS2DirectoryPollingModule] File moved to error directory
成功接收
INFO [AS2ReceiverModule] Message received from PartnerName
INFO [AS2ReceiverModule] File saved to inbox/PartnerName/
3. 监控要点
- 检查error目录中的失败文件
- 监控日志中的ERROR和WARN信息
- 验证MDN回执的接收情况
- 检查证书过期时间
故障排除
1. 常见问题
连接超时
症状: Connection timeout错误
解决方案:
- 检查网络连接
- 验证合作伙伴URL是否正确
- 确认防火墙设置
证书错误
症状: Certificate validation failed
解决方案:
- 检查证书是否过期
- 验证证书别名配置
- 确认证书格式正确
文件未发送
症状: 文件放入outbox后未被处理
解决方案:
- 检查目录轮询配置
- 验证合作关系配置
- 查看日志错误信息
2. 调试步骤
-
启用详细日志
<logger name="org.openas2" level="DEBUG"/> -
检查配置文件语法
- 验证XML格式正确性
- 检查必需属性是否完整
-
测试网络连接
telnet partner-server.com 10443 -
验证证书
openssl x509 -in certificate.cer -text -noout
3. 性能优化
- 调整轮询间隔(interval参数)
- 优化JVM内存设置
- 使用异步处理模式
- 定期清理日志和临时文件
最佳实践
1. 安全配置
- 使用强密码保护证书
- 定期更新证书
- 启用HTTPS传输
- 限制网络访问权限
2. 运维管理
- 定期备份配置文件和证书
- 监控磁盘空间使用
- 设置日志轮转策略
- 建立故障恢复流程
3. 性能调优
- 根据业务量调整轮询间隔
- 优化JVM参数设置
- 使用SSD存储提高I/O性能
- 合理配置线程池大小
4. 测试建议
- 在生产环境前进行充分测试
- 使用小文件进行连通性测试
- 验证各种错误场景的处理
- 测试证书过期等异常情况
附录
A. 配置参数参考
| 参数名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
| port | HTTP监听端口 | 10080 | 8080 |
| ssl_port | HTTPS监听端口 | 10443 | 8443 |
| interval | 轮询间隔(毫秒) | 5000 | 10000 |
| encrypt | 加密算法 | 3des | aes128 |
| sign | 签名算法 | sha1 | sha256 |
B. 错误代码说明
| 错误代码 | 描述 | 解决方案 |
|---|---|---|
| AS2-001 | 证书验证失败 | 检查证书配置 |
| AS2-002 | 网络连接超时 | 检查网络设置 |
| AS2-003 | 文件格式错误 | 验证文件完整性 |
C. 支持的加密算法
- 对称加密: 3DES, AES128, AES192, AES256
- 非对称加密: RSA
- 哈希算法: SHA1, SHA256, SHA512
- 签名算法: RSA-SHA1, RSA-SHA256
版本: OpenAS2 Server 3.11.0
更新日期: 2025年
文档版本: 1.0
如有问题,请参考官方文档或联系技术支持。

浙公网安备 33010602011771号