OpenAS2简易使用

OpenAS2 使用手册

目录

  1. 概述
  2. 系统要求
  3. 安装配置
  4. 配置文件详解
  5. 合作伙伴管理
  6. 文件传输
  7. 证书管理
  8. 监控和日志
  9. 故障排除
  10. 最佳实践

概述

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. 基础安装

  1. 解压安装包

    解压OpenAS2Server-3.11.0.zip到目标目录
    例如: f:\OpenAS2Server-3.11.0
    
  2. 目录结构说明

    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目录(推荐)

  1. 将要发送的文件放入 data/outbox/PartnerName/ 目录
  2. 系统会自动检测并发送文件
  3. 发送成功后,文件会移动到相应的sent目录

方法2: 使用专用轮询目录

  1. 将文件放入配置的轮询目录(如 data/to25071809US/
  2. 系统按配置的间隔检测并发送
  3. 成功后文件移动到sent目录,失败则移动到error目录

2. 接收文件

  1. 自动接收: 合作伙伴发送的文件会自动保存到 data/inbox/PartnerName/ 目录
  2. MDN确认: 系统会自动发送MDN回执确认收到文件
  3. 错误处理: 接收失败的文件会保存到 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. 调试步骤

  1. 启用详细日志

    <logger name="org.openas2" level="DEBUG"/>
    
  2. 检查配置文件语法

    • 验证XML格式正确性
    • 检查必需属性是否完整
  3. 测试网络连接

    telnet partner-server.com 10443
    
  4. 验证证书

    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

如有问题,请参考官方文档或联系技术支持。

posted @ 2025-07-18 11:37  lyu6  阅读(226)  评论(0)    收藏  举报